البلوتوث

رمز Android Bluetooth HAL

يقدّم Android حِزمة بلوتوث تلقائية متوافقة مع كلّ من البلوتوث الكلاسيكي وتقنية البلوتوث المنخفضة الطاقة. باستخدام البلوتوث، يمكن لأجهزة Android إنشاء شبكات منطقة شخصية لإرسال البيانات واستلامها باستخدام أجهزة البلوتوث المجاورة.

في الإصدار 4.3 من نظام التشغيل Android والإصدارات الأحدث، توفّر حِزمة Android Bluetooth إمكانية تنفيذ البلوتوث منخفض الطاقة (BLE). للاستفادة إلى أقصى حد من واجهات برمجة تطبيقات BLE، اتّبِع متطلبات Android Bluetooth HCI. يمكن لأجهزة Android التي تتضمّن شريحة معالجة مؤهَّلة استخدام تقنية البلوتوث الكلاسيكية أو كلاً من البلوتوث الكلاسيكي وتقنية البلوتوث منخفض الطاقة. لا تتوافق تقنية BLE مع شرائح البلوتوث القديمة.

في نظام التشغيل Android 8.0، تكون حِزمة البلوتوث الأصلية مؤهَّلة بالكامل لاستخدام معيار Bluetooth 5. لاستخدام ميزات البلوتوث 5 المتاحة، يجب أن يتضمّن الجهاز شريحة معالجة مؤهَّلة للبلوتوث 5.

هندسة تطبيقات Android

يتواصل تطبيق البلوتوث مع عملية البلوتوث من خلال Binder. تستخدِم عملية البلوتوث حزمة JNI للتواصل مع حِزمة البلوتوث، وتوفّر للمطوّرين إمكانية الوصول إلى ملفات تعريف البلوتوث المختلفة. يعرض هذا الرسم البياني البنية العامة لحزمة Bluetooth:

بنية البلوتوث في Android
الشكل 1. بنية البلوتوث في Android
إطار عمل التطبيق
على مستوى إطار عمل التطبيق، يكون رمز التطبيق الذي يستخدم واجهات برمجة التطبيقات android.bluetooth للتفاعل مع أجهزة البلوتوث. داخليًا، يستدعي هذا الرمز عملية Bluetooth من خلال آلية Binder IPC.
تطبيق البلوتوث
يتم تجميع تطبيق البلوتوث، المتوفّر في packages/modules/Bluetooth/android/app، كتطبيق Android، ويعمل على تنفيذ الملفات الشخصية للبلوتوث في packages/modules/Bluetooth/android/app إطار عمل Android. يطلب هذا التطبيق حِزم البلوتوث الأصلية من خلال واجهة JNI.
JNI
يمكن العثور على رمز JNI المرتبط بـ android.bluetooth في packages/modules/Bluetooth/android/app/jni. يستدعي رمز JNI ملف برمجي برمجيًا لنظام البلوتوث عند حدوث عمليات معيّنة في البلوتوث، مثل عند اكتشاف الأجهزة.
حزمة البلوتوث
يتم توفير حزمة البلوتوث التلقائية في AOSP ويمكن العثور عليها في packages/modules/Bluetooth/system. تنفِّذ الحزمة البلوتوث HAL العام وتخصِّصه من خلال الإضافات وتغييرات الإعدادات.
تنفيذ المورّد
تتفاعل أجهزة المورّدين مع حِزمة البلوتوث باستخدام لغة HIDL (Hardware Interface Design Language).

HIDL

تحدِّد واجهة HIDL بين حِزمة Bluetooth وتنفيذ المورِّد. لإنشاء ملفات Bluetooth HIDL، عليك تمرير ملفات واجهة البلوتوث إلى أداة إنشاء HIDL. يمكن العثور على ملفات الواجهة في hardware/interfaces/bluetooth.

تطوير حزمة البلوتوث

حِزمة البلوتوث في Android هي حِزمة بلوتوث مؤهَّلة بالكامل. يمكن العثور على قائمة المؤهّلين على الموقع الإلكتروني لـ Bluetooth SIG ضِمن QDID 169365.

تقع حزمة البلوتوث الأساسية في packages/modules/Bluetooth. يتم التطوير في إطار مشروع AOSP، ونرحب بالمساهمات.

بنية الإصدار 7.x من نظام التشغيل Android والإصدارات الأقدم

تتواصل خدمة نظام البلوتوث مع حِزمة البلوتوث من خلال واجهة برمجة التطبيقات JNI ومع التطبيقات من خلال Binder IPC. توفّر خدمة النظام للمطوّرين إمكانية الوصول إلى مختلف الملفات الشخصية للبلوتوث. يعرض هذا الرسم البياني البنية العامة لحزمة Bluetooth:

بنية البلوتوث في Android
الشكل 2. بنية البلوتوث في الإصدار 7.x من نظام التشغيل Android والإصدارات الأقدم
إطار عمل التطبيق
على مستوى إطار عمل التطبيق، يكون رمز التطبيق الذي يستخدم واجهتَي برمجة التطبيقات android.bluetooth للتفاعل مع أجهزة البلوتوث. داخليًا، يستدعي هذا الرمز عملية Bluetooth من خلال آلية Binder IPC.
خدمة نظام البلوتوث
يتم تجميع خدمة نظام البلوتوث، المتوفّرة في packages/apps/Bluetooth، كتطبيق Android، وتعمل على تنفيذ خدمة البلوتوث وملفّات الضبط في packages/apps/Bluetooth إطار عمل Android. يستدعي هذا التطبيق طبقة HAL من خلال واجهة JNI.
JNI
يمكن العثور على رمز JNI المرتبط بملف android.bluetooth في packages/apps/Bluetooth/jni. يستدعي رمز JNI طبقة HAL ويتلقّى عمليات استدعاء من HAL عند حدوث عمليات معيّنة في البلوتوث، مثل عند اكتشاف الأجهزة.
HAL
تُحدِّد طبقة تجريد الأجهزة الواجهة العادية التي تتصل بها واجهات برمجة تطبيقات android.bluetooth وعملية البلوتوث، والتي يجب تنفيذها لكي تعمل الأجهزة المزوّدة بتقنية البلوتوث بشكل صحيح. ملف الرأس لواجهة برمجة التطبيقات لبروتوكول البلوتوث هو hardware/libhardware/include/hardware/bluetooth.h. بالإضافة إلى ذلك، راجِع جميع ملفات hardware/libhardware/include/hardware/bt_*.h.
حزمة البلوتوث
يتم توفير حِزمة Bluetooth التلقائية لك، وهي متوفّرة في system/bt. تنفِّذ الحزمة وحدة HAL العامة للبلوتوث وتخصِّصها باستخدام الإضافات و تغييرات الإعدادات.
إضافات المورّدين
لإضافة إضافات مخصّصة وطبقة HCI للتتبّع، يمكنك إنشاء وحدة libbt-vendor وتحديد هذه المكوّنات.

تنفيذ HAL

يمكن العثور على Bluetooth HAL في /hardware/libhardware/include/hardware/bluetooth.h. يحتوي ملف bluetooth.h على الواجهة الأساسية لحزمة Bluetooth، ويجب تنفيذ وظائفها.

يمكن العثور على الملفات الخاصة بالملف الشخصي في الدليل نفسه. لمعرفة التفاصيل، يُرجى الاطّلاع على مرجع ملف HAL.