بلوتوث در برنامه نویسی اندروید

4 سال پیش

بلوتوث در برنامه نویسی اندروید

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد بلوتوث در برنامه نویسی اندروید صحبت خواهیم کرد.

 

از بین راه های مختلف، بلوتوث راهی برای ارسال یا دریافت داده بین دو دستگاه مختلف است. پلت فرم اندروید شامل پشتیبانی از فریم ورک بلوتوث است که به دستگاه اجازه می دهد داده ها را به صورت بی سیم با سایر دستگاه های دارای بلوتوث تبادل کند.

اندروید برای انجام این عملیات مختلف، API بلوتوث را فراهم می کند.

  • سایر دستگاههای بلوتوث را اسکن کنید
  • دریافت لیستی از دستگاه های جفت شده
  • از طریق service discovery به سایر دستگاه ها متصل شوید

اندروید کلاس BluetoothAdapter را برای برقراری ارتباط با بلوتوث فراهم می کند. با فراخوانی متد ()static getDefaultAdapter یک شی از این فراخوانی ایجاد کنید. نحو آن در زیر آورده شده است.

private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();

برای فعال کردن بلوتوث دستگاه خود ، intent را با ثابت بلوتوث ACTION_REQUEST_ENABLE فراخوانی کنید. نحو آن به صورت زیر است.

Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);

به غیر از این ثابت، ثابت های دیگری نیز وجود دارد که با استفاده از API، وظایف مختلف را پشتیبانی می کند. آنها در زیر لیست شده اند.

  • ACTION_REQUEST_DISCOVERABLE

این ثابت برای روشن کردن بلوتوث استفاده می شود

  • ACTION_STATE_CHANGED

این ثابت به شما اطلاع می دهد که حالت بلوتوث تغییر کرده است

  • ACTION_FOUND

این ثابت برای دریافت اطلاعات مربوط به هر دستگاهی که کشف می شود استفاده می شود

 

هنگامی که بلوتوث را فعال (روشن) کردید، می توانید با فراخوانی متد ()getBondedDevices لیستی از دستگاه های جفت شده را دریافت کنید. مجموعه ای از دستگاه های بلوتوث را برمی گرداند. نحو آن به صورت زیر است.

private Set<BluetoothDevice>pairedDevices;
pairedDevices = BA.getBondedDevices();

 

به غیر از دستگاه های جفت شده، متد های دیگری نیز در API وجود دارد که کنترل بیشتری بر بلوتوث دارد. آنها در زیر لیست شده اند.

  • ()enable

این متد در صورت فعال نبودن آداپتور را فعال می کند

  •  ()isEnabled

اگر آداپتور فعال باشد، این متد مقدار درست را برمی گرداند

  • ()disable

این متد آداپتور را غیرفعال می کند

  • ()getName 

این متد نام آداپتور بلوتوث را برمی گرداند

  • (setName(String name

این متد نام بلوتوث را تغییر می دهد

  • ()getState 

این روش وضعیت فعلی آداپتور بلوتوث را برمی گرداند.

  • ()startDiscovery 

این متد روند کشف بلوتوث را به مدت ۱۲۰ ثانیه آغاز می کند.

 

مثال

این مثال نمایانگر کلاس BluetoothAdapter برای به کار گرفتن بلوتوث و نمایش لیست دستگاه های جفت شده توسط بلوتوث است.

برای آزمایش این مثال، باید آن را روی دستگاه واقعی اجرا کنید.

شرح مراحل

۱ شما از Android studio برای ایجاد یک برنامه Android با یک بسته com.example.sairamkrishna.myapplication استفاده خواهید کرد.
۲ برای افزودن کد، پرونده src / MainActivity.java را تغییر دهید
۳ طرح XML را تغییر دهید فایل res / layout / activity_main.xml در صورت لزوم، هر جز GUI اضافه کنید.
۴ AndroidManifest.xml را تغییر دهید تا مجوزهای لازم را اضافه کنید.
۵ برنامه را اجرا کرده و دستگاه اندرویدی در حال اجرا را انتخاب کنید و برنامه را روی آن نصب کنید و نتایج را تأیید کنید.

در اینجا محتوای src / MainActivity.java است

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;

public class MainActivity extends Activity  {
   Button b1,b2,b3,b4;
   private BluetoothAdapter BA;
   private Set<BluetoothDevice>pairedDevices;
   ListView lv;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1 = (Button) findViewById(R.id.button);
      b2=(Button)findViewById(R.id.button2);
      b3=(Button)findViewById(R.id.button3);
      b4=(Button)findViewById(R.id.button4);

      BA = BluetoothAdapter.getDefaultAdapter();
      lv = (ListView)findViewById(R.id.listView);
   }

   public void on(View v){
      if (!BA.isEnabled()) {
         Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
         startActivityForResult(turnOn, 0);
         Toast.makeText(getApplicationContext(), "Turned on",Toast.LENGTH_LONG).show();
      } else {
         Toast.makeText(getApplicationContext(), "Already on", Toast.LENGTH_LONG).show();
      }
   }

   public void off(View v){
      BA.disable();
      Toast.makeText(getApplicationContext(), "Turned off" ,Toast.LENGTH_LONG).show();
   }

    
   public  void visible(View v){
      Intent getVisible = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
      startActivityForResult(getVisible, 0);
   }

    
   public void list(View v){
      pairedDevices = BA.getBondedDevices();
        
      ArrayList list = new ArrayList();

      for(BluetoothDevice bt : pairedDevices) list.add(bt.getName());
      Toast.makeText(getApplicationContext(), "Showing Paired Devices",Toast.LENGTH_SHORT).show();

      final ArrayAdapter adapter = new  ArrayAdapter(this,android.R.layout.simple_list_item_1, list);
        
      lv.setAdapter(adapter);
   }
}

در اینجا محتوای activity_main.xml است

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="Bluetooth Example" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Turn On"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_toStartOf="@+id/imageView"
      android:layout_toLeftOf="@+id/imageView"
      android:clickable="true"
      android:onClick="on" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Get visible"
      android:onClick="visible"
      android:id="@+id/button2"
      android:layout_alignBottom="@+id/button"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="List devices"
      android:onClick="list"
      android:id="@+id/button3"
      android:layout_below="@+id/imageView"
      android:layout_toRightOf="@+id/imageView"
      android:layout_toEndOf="@+id/imageView" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="turn off"
      android:onClick="off"
      android:id="@+id/button4"
      android:layout_below="@+id/button"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />
      
   <ListView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/listView"
      android:layout_alignParentBottom="true"
      android:layout_alignLeft="@+id/button"
      android:layout_alignStart="@+id/button"
      android:layout_below="@+id/textView2" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Paired devices:"
      android:id="@+id/textView2"
      android:textColor="#ff34ff06"
      android:textSize="25dp"
      android:layout_below="@+id/button4"
      android:layout_alignLeft="@+id/listView"
      android:layout_alignStart="@+id/listView" />

</RelativeLayout>

در اینجا محتوای Strings.xml وجود دارد

<resources>
   <string name="app_name">My Application</string>
</resources>

در اینجا محتوای AndroidManifest.xml است

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <uses-permission android:name="android.permission.BLUETOOTH"/>
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

بیایید برنامه را اجرا کنیم. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید.اگر بلوتوث شما روشن نباشد، برای فعال کردن بلوتوث از شما اجازه می خواهد.

اکنون فقط دکمه Get Visible را انتخاب کنید تا قابلیت مشاهده شما روشن شود. صفحه زیر با درخواست اجازه شما برای روشن کردن و کشف به مدت ۱۲۰ ثانیه ظاهر می شود.

حالا فقط گزینه List Devices را انتخاب کنید. دستگاه های جفت شده را  لیست می کند. در زیر نشان داده شده است.

اکنون فقط دکمه Turn off را انتخاب کنید تا بلوتوث خاموش شود. هنگام خاموش کردن بلوتوث پیام زیر نشان داده می شود که نشانگر خاموش شدن موفقیت آمیز بلوتوث است.

منبع.

لیست جلسات قبل آموزش برنامه نویسی اندروید

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
  9. گیرنده های پخش در برنامه نویسی اندروید
  10. ارائه دهنده محتوا در برنامه نویسی اندروید
  11. قطعات در برنامه نویسی اندروید
  12. Intent و فیلتر در برنامه نویسی اندروید
  13. طرح بندی رابط کاربری در برنامه نویسی اندروید
  14. کنترل های رابط کاربری در برنامه نویسی اندروید
  15. مدیریت رویدادها در برنامه نویسی اندروید
  16. استایل و تم ها در برنامه نویسی اندروید
  17. اجزای سفارشی در برنامه نویسی اندروید
  18. کشیدن و رها کردن در برنامه نویسی اندروید
  19. نوتیفیکیشن ها در برنامه نویسی اندروید
  20. سرویس های مبتنی بر مکان در برنامه نویسی اندروید
  21. ارسال ایمیل در برنامه نویسی اندروید
  22. ارسال پیامک در برنامه نویسی اندروید
  23. تماس های تلفنی در برنامه نویسی اندروید
  24. انتشار برنامه اندروید
  25. آموزش Alert Dialog در برنامه نویسی اندروید
  26. انیمیشن در برنامه نویسی اندروید
  27. ضبط صدا در برنامه نویسی اندروید
  28. مدیریت صدا در برنامه نویسی اندروید
  29. آموزش Auto Complete در برنامه نویسی اندروید
  30. بهترین شیوه ها در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه