البلوتوث

الروبوت بلوتوث هال أيقونة

يوفر Android حزمة Bluetooth افتراضية تدعم كلاً من Bluetooth الكلاسيكي وBluetooth Low Energy. باستخدام تقنية Bluetooth، يمكن لأجهزة Android إنشاء شبكات منطقة شخصية لإرسال واستقبال البيانات مع أجهزة Bluetooth القريبة.

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

في Android 8.0، تكون حزمة Bluetooth الأصلية مؤهلة بالكامل لـ Bluetooth 5. لاستخدام ميزات Bluetooth 5 المتوفرة، يحتاج الجهاز إلى مجموعة شرائح مؤهلة لـ Bluetooth 5.

بنية الروبوت

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

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

هيدل

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

تطوير مكدس البلوتوث

مكدس Android Bluetooth عبارة عن مكدس Bluetooth مؤهل بالكامل. قائمة المؤهلات موجودة على موقع Bluetooth SIG الإلكتروني تحت QDID 169365 .

توجد حزمة Bluetooth الأساسية في packages/modules/Bluetooth . يحدث التطوير في AOSP، والمساهمات مرحب بها.

Android 7.x والهندسة المعمارية الأقدم

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

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

تنفيذ HAL

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

توجد الملفات الخاصة بملف التعريف في نفس الدليل. لمزيد من التفاصيل، راجع مرجع ملف HAL .