إعداد البلوتوث

قبل أن يتمكن تطبيقك من الاتصال عبر بلوتوث أو Bluetooth Low Energy، يجب عليك التحقق من دعم Bluetooth على الجهاز، وإذا كان يعمل، فتأكد من تفعيله. وتجدر الإشارة إلى أنّه يجب إجراء عملية التحقّق هذه فقط في حال ضبط السمة android:required في إدخال ملف البيان <uses-feature.../> على false.

إذا لم تكن تقنية البلوتوث متوفرة، عليك إيقاف أي ميزة من ميزات البلوتوث بها. إذا كانت تقنية البلوتوث متوافقة، ولكن تم إيقافها، يمكنك أن تطلب من المستخدم تفعيل البلوتوث بدون مغادرة التطبيق.

تتمثل الخطوة الأولى في إضافة أذونات Bluetooth إلى ملف البيان لاستخدام واجهات برمجة التطبيقات التالية.

بعد منح الأذونات، يتم إكمال إعداد البلوتوث في خطوتين باستخدام BluetoothAdapter:

  1. يمكنك الحصول على 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
    }
    
  2. تفعيل البلوتوث

    بعد ذلك، عليك التأكّد من تفعيل البلوتوث. اتصل بالرقم 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. يمكن أن يكون الاستماع إلى هذا البث مفيدًا إذا كان تطبيقك يحتاج إلى اكتشاف تغييرات وقت التشغيل التي يتم إجراؤها على حالة البلوتوث.

ملاحظة: يؤدي تفعيل قابلية الاكتشاف إلى تفعيل البلوتوث تلقائيًا. إذا كنت تنوي تفعيل قابلية اكتشاف الجهاز باستمرار قبل تنفيذ نشاط البلوتوث، يمكنك تخطي الخطوة 2 في الخطوات السابقة.

بعد تفعيل البلوتوث على الجهاز، يمكنك استخدام كل من البلوتوث الكلاسيكي والبلوتوث المنخفض الطاقة.

بالنسبة إلى البلوتوث الكلاسيكي، يمكنك البحث عن أجهزة تتضمّن بلوتوث وتوصيلها بأجهزة تتضمّن بلوتوث.

بالنسبة إلى البلوتوث المنخفض الطاقة، يمكنك العثور على أجهزة BLE والاتصال بخادم GATT ونقل بيانات BLE.