با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. از میان راههای مختلف، Bluetooth (بلوتوث) راهی برای ارسال یا دریافت اطلاعات بین دو دستگاه مختلف است. پلت فرم آندروید شامل پشتیبانی از فریم ورک بلوتوث است که اجازه می دهد یک دستگاه به صورت بی سیم با سایر دستگاه های دارای بلوتوث مبادله کند. با اینکه با ارائه ی شبکه ی بیسیم wi-fi راه سریع تر و بهتری برای مبادله ی اطلاعات بین دو دستگاه بی سیم ارائه شده اما همچنان استفاده از سیستم Bluetooth در اندروید در بعضی موارد مورد نیاز است، که ما در ادامه ی مباحث این آموزش شما را به چگونگی کار با بلوتوث در اندروید آشنا خواهیم کرد.
در ادامه ی مباحث شما را با ساختار استفاده از Bluetooth در اندروید و یک مثال ساده آشنا می کنیم.
اندروید API بلوتوث را برای انجام این عملیات ارائه می دهد:
آندروید کلاس BluetoothAdapter را برای ارتباط با بلوتوث فراهم می کند.
با استفاده از متد () static getDefaultAdapter یک شیء از این فراخوانی ایجاد کنید.
ساختار این کار به این صورت است:
1 2 | private BluetoothAdapter BA; BA = BluetoothAdapter.getDefaultAdapter(); |
برای فعای کردن بلوتوث باید intent ثابت ACTION_REQUEST_ENABLE را فرخوانی کنید.
1 2 | Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOn, 0); |
به غیر از این ثابت، دیگر ثابت ها API ارائه می شود که از وظایف مختلف پشتیبانی می کند. آنها در زیر فهرست شده اند:
ردیف | ثابت و توضیحات |
---|---|
۱ | ACTION_REQUEST_DISCOVERABLE این ثابت برای نوشتن بلوتوث به کار می رود. |
۲ | ACTION_STATE_CHANGED این ثابت اعلام های تغییر وضعیت بلوتوث را نمایش می دهد. |
۳ | ACTION_FOUND این ثابت برای دریافت اطلاعات در مورد هر دستگاه کشف شده استفاده می شود. |
هنگامی که بلوتوث را فعال می کنید، می توانید لیستی از دستگاه های مرتبط را با استفاده از متد () getBondedDevices دریافت کنید.
اقدام فوق مجموعه ای از دستگاه های بلوتوث را بازمی گرداند که ساختار آن به صورت زیر است:
1 2 | private Set<BluetoothDevice>pairedDevices; pairedDevices = BA.getBondedDevices(); |
API های دیگری نیز وجود دارد که کنترل بیشتری بر روی بلوتوث دارد. آنها در زیر فهرست شده اند:
ردیف | متد و توضیحات |
---|---|
۱ | enable() این متد آداپتور بلوتوث را در صورت فعال نبودن فعال می کند. |
۲ | isEnabled() این متد در صورتیکه آداپتور فعال باشد true را برمی گرداند. |
۳ | disable() این متد آداپتور را غیر فعال می کند. |
۴ | getName() این متد نام آداپتور بلوتوث را برمی گرداند. |
۵ | setName(String name) این متد نام بلوتوث را تغییر می دهد. |
۶ | getState() این متد وضعیت جاری آداپتور بلوتوث را برمی گرداند. |
۷ | startDiscovery() این متد فرآیند کشف بلوتوث را برای ۱۲۰ ثانیه آغاز می کند. |
این مثال نشان می دهد کلاس BluetoothAdapter برای دستکاری بلوتوث و نمایش لیست دستگاه های مرتبط با بلوتوث است.
برای آزمایش این مثال، شما باید آن را روی یک دستگاه واقعی اجرا کنید.
مراحل انجام کار :
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی دنبال کرده و نام پکیج را com.pvlearn.myapplication قرار بدهید. |
۲ | به محتوای فایل src/MainActivity.java کدهای مربوطه را اضافه کنید. |
۳ | به محتوای فایل res/layout/activity_main.xml طراحی مورد نظر را اضافه کنید. |
۴ | به محتوای فایل AndroidManifest.xml مجوزهای لازم را اضافه کنید. |
۵ | برنامه را اجرا کنید تا شبیه ساز اندروید نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | <?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="Pvlearn" 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:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?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> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس نتیجه اجرای برنامه را در دستگاه اندروید خود مشابه زیر مشاهده خواهید کرد:
حالا روی Get Visible کلیک کنید تا صفحه ی نمایش زیر ظاهر شده و زمان ۱۲۰ ثانیه برای پیدا کردن دستگاه بلوتوث شروع می شود.
حالا فقط گزینه List Devices را انتخاب کنید. این لیست دستگاه های مرتبط در لیست را لیست می کند.
حالا روی Turn off برای خاموش کردن بلوتوث دستگاه کلیک کنید.
سپس دستگاه پیغام موفقیت آمیز بودن خاموش شدن بلوتوث را نشان می دهد:
روش های مختلفی برای برقراری ارتباط بین دستگاههای مختلف اندروید وجود دارد که بلوتوث یکی از روش های متداول و قدیمی اتصال بین دو دستگاه موبایل است، از این رو برای آشنایی شما با طریقه ی استفاده از این قابلیت مباحث این بخش را به آشنایی با Bluetooth در اندروید اختصاص دادیم.
در بخش بعدی شما را با چگونگی کار با دوربین در اندروید آشنا می کنیم.
علی عسکری
شما که اصل کاری رو نگفتین چطور داده ارسال کنیم به دستگاه دیگر
مجتبی
دم تون گرم! هر چند ارسال و دریافت داده رو نگفتین ولی تا همینجاشو هم نیاز داشتم. مرسی واقعا!
علی
سلام
من یه مشکلی که دارم اینه
میخوام از طریق بلوتوث اندروید متن بفرستم HC-05
ولی نمیتونم
لطفاً کمکم کنید
صادق
سلام.
به صورت پیش فرض همچین کاری رو نمی تونید انجام بدید. بهتره از یک اپلیکیشن پیامرسان بلوتوثی استفاده کنید.