قبل أن يتمكن تطبيقك من الاتصال عبر بلوتوث أو Bluetooth Low Energy،
يجب عليك التحقق من دعم Bluetooth على الجهاز، وإذا كان يعمل،
فتأكد من تفعيله. وتجدر الإشارة إلى أنّه يجب إجراء عملية التحقّق هذه فقط في حال ضبط السمة android:required
في إدخال ملف البيان <uses-feature.../>
على false
.
إذا لم تكن تقنية البلوتوث متوفرة، عليك إيقاف أي ميزة من ميزات البلوتوث بها. إذا كانت تقنية البلوتوث متوافقة، ولكن تم إيقافها، يمكنك أن تطلب من المستخدم تفعيل البلوتوث بدون مغادرة التطبيق.
تتمثل الخطوة الأولى في إضافة أذونات Bluetooth إلى ملف البيان لاستخدام واجهات برمجة التطبيقات التالية.
بعد منح الأذونات، يتم إكمال إعداد البلوتوث في خطوتين
باستخدام BluetoothAdapter
:
يمكنك الحصول على
BluetoothAdapter
.يجب استخدام
BluetoothAdapter
لجميع أنشطة البلوتوث. ويمثّلBluetoothAdapter
محوِّل البلوتوث الخاص بالجهاز (راديو البلوتوث). للحصول علىBluetoothAdapter
، يجب أولاً أن يكون لديكContext
. استخدِم هذا السياق للحصول على مثيل من خدمة نظامBluetoothManager
. يؤدي استدعاءBluetoothManager#getAdapter
إلى منحك كائنBluetoothAdapter
. وإذا عرضت السمةgetAdapter()
قيمة فارغة، هذا يعني أنّ الجهاز لا يتوافق مع البلوتوث.مثلاً:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
تفعيل البلوتوث
بعد ذلك، عليك التأكّد من تفعيل البلوتوث. اتصل بالرقم
isEnabled()
للتحقق مما إذا كانت تقنية البلوتوث مفعّلة حاليًا أم لا. إذا عرضت هذه الطريقة خطأ، فسيتم إيقاف البلوتوث. لطلب تفعيل البلوتوث، عليك استدعاءstartActivityForResult()
، وتمرير إجراءACTION_REQUEST_ENABLE
. تُصدر هذه المكالمة طلبًا لتفعيل البلوتوث من خلال إعدادات النظام (بدون إيقاف تطبيقك).مثلاً:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
يظهر مربع حوار يطلب إذن المستخدم لتفعيل البلوتوث، كما هو موضح في الشكل 1. وإذا منح المستخدم الإذن، يبدأ النظام في تفعيل البلوتوث، ويعود التركيز إلى تطبيقك بعد اكتمال العملية (أو تعذُّر إكمالها).
الشكل 1. مربع حوار تفعيل البلوتوث.
ثابت REQUEST_ENABLE_BT
الذي تم تمريره إلى
startActivityForResult()
هو عدد صحيح محدّد محليًا يجب أن يكون أكبر من أو يساوي 0. يمرّر النظام هذا الثابت مرة أخرى إليك في تنفيذ onActivityResult()
باعتباره المعلَمة requestCode
.
في حال نجح تفعيل البلوتوث، سيتلقّى نشاطك رمز نتيجة RESULT_OK
في معاودة الاتصال onActivityResult()
. إذا لم تكن تقنية البلوتوث مفعّلة بسبب خطأ (أو ردّ المستخدم بـ "رفض")، يكون رمز النتيجة هو RESULT_CANCELED
.
اختياريًا، يمكن لتطبيقك أيضًا رصد
ACTION_STATE_CHANGED
هدف البث، الذي يبثه النظام كلما تغيّرت حالة البلوتوث. يحتوي حدث البث هذا على الحقلَين الإضافيَّين
EXTRA_STATE
و
EXTRA_PREVIOUS_STATE
،
اللذين يتضمّنان حالة البلوتوث الجديدة والقديمة، على التوالي. القيم المحتملة لهذه الحقول الإضافية هي
STATE_TURNING_ON
وSTATE_ON
وSTATE_TURNING_OFF
وSTATE_OFF
.
يمكن أن يكون الاستماع إلى هذا البث مفيدًا إذا كان تطبيقك يحتاج إلى اكتشاف تغييرات وقت التشغيل التي يتم إجراؤها على حالة البلوتوث.
بعد تفعيل البلوتوث على الجهاز، يمكنك استخدام كل من البلوتوث الكلاسيكي والبلوتوث المنخفض الطاقة.
بالنسبة إلى البلوتوث الكلاسيكي، يمكنك البحث عن أجهزة تتضمّن بلوتوث وتوصيلها بأجهزة تتضمّن بلوتوث.
بالنسبة إلى البلوتوث المنخفض الطاقة، يمكنك العثور على أجهزة BLE والاتصال بخادم GATT ونقل بيانات BLE.