بلوتوث

آیکون بلوتوث اندروید HAL

اندروید یک پشته بلوتوث پیش‌فرض ارائه می‌دهد که از هر دو بلوتوث کلاسیک و بلوتوث کم‌مصرف (BLE) پشتیبانی می‌کند. با استفاده از بلوتوث، دستگاه‌های اندروید می‌توانند شبکه‌های شخصی ایجاد کنند تا داده‌ها را با دستگاه‌های بلوتوث مجاور ارسال و دریافت کنند.

در اندروید ۴.۳ و بالاتر، پشته بلوتوث اندروید امکان پیاده‌سازی BLE را فراهم می‌کند. برای استفاده کامل از APIهای BLE، الزامات HCI بلوتوث اندروید را دنبال کنید. دستگاه‌های اندروید با چیپست واجد شرایط می‌توانند بلوتوث کلاسیک یا بلوتوث کلاسیک و BLE را با هم پیاده‌سازی کنند. BLE با چیپست‌های بلوتوث قدیمی‌تر سازگار نیست.

در اندروید ۸.۰، مجموعه بلوتوث کاملاً برای بلوتوث ۵ واجد شرایط است. برای استفاده از ویژگی‌های موجود بلوتوث ۵، دستگاه باید چیپست واجد شرایط بلوتوث ۵ داشته باشد.

معماری اندروید

یک برنامه بلوتوث از طریق Binder با فرآیند بلوتوث ارتباط برقرار می‌کند. فرآیند بلوتوث از رابط بومی جاوا (JNI) برای ارتباط با پشته بلوتوث استفاده می‌کند و به توسعه‌دهندگان امکان دسترسی به پروفایل‌های مختلف بلوتوث را می‌دهد. این نمودار ساختار کلی پشته بلوتوث را نشان می‌دهد:

نموداری که لایه‌های پشته بلوتوث اندروید را نشان می‌دهد.

شکل 1. معماری بلوتوث اندروید.

چارچوب برنامه
در سطح چارچوب برنامه، کد برنامه قرار دارد که از APIهای android.bluetooth برای تعامل با سخت‌افزار بلوتوث استفاده می‌کند. در داخل، این کد فرآیند بلوتوث را از طریق مکانیسم Binder IPC فراخوانی می‌کند.
برنامه بلوتوث
برنامه بلوتوث که در packages/modules/Bluetooth/android/app قرار دارد، به عنوان یک برنامه اندروید بسته‌بندی شده و پروفایل‌های بلوتوث را در لایه چارچوب اندروید پیاده‌سازی می‌کند. این برنامه از طریق JNI به پشته بلوتوث فراخوانی می‌شود.
جی ان آی
کد JNI مرتبط با android.bluetooth در packages/modules/Bluetooth/android/app/jni قرار دارد. کد JNI هنگام وقوع برخی عملیات بلوتوث، مانند کشف دستگاه‌ها، در پشته بلوتوث فراخوانی می‌شود.
پشته بلوتوث
پشته بلوتوث پیش‌فرض در AOSP ارائه شده و در packages/modules/Bluetooth/system قرار دارد. این پشته، HAL بلوتوث عمومی را پیاده‌سازی کرده و آن را با افزونه‌ها و تغییرات پیکربندی سفارشی می‌کند.
پیاده‌سازی فروشنده
دستگاه‌های فروشنده با استفاده از زبان تعریف رابط HAL (HIDL) با پشته بلوتوث تعامل دارند.

هایدل

HIDL رابط بین پشته بلوتوث و پیاده‌سازی فروشنده را تعریف می‌کند. برای تولید فایل‌های HIDL بلوتوث، فایل‌های رابط بلوتوث را به ابزار تولید HIDL منتقل کنید. فایل‌های رابط در hardware/interfaces/bluetooth قرار دارند.

توسعه پشته بلوتوث

مجموعه بلوتوث اندروید یک مجموعه بلوتوث کاملاً واجد شرایط است. فهرست صلاحیت‌ها در وب‌سایت Bluetooth SIG (نیازمند ورود به سیستم) با شماره QDID 169365 قرار دارد.

هسته اصلی بلوتوث در پوشه packages/modules/Bluetooth قرار دارد. توسعه در AOSP انجام می‌شود و از مشارکت‌ها استقبال می‌شود.