بلوتوث

نماد Android Bluetooth HAL

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

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

در Android 8.0، پشته بلوتوث به‌طور کامل برای بلوتوث ۵ واجدشرایط است. برای استفاده از ویژگی‌های دردسترس بلوتوث ۵، دستگاه باید تراشه واجدشرایط بلوتوث ۵ داشته باشد.

معماری Android

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

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

شکل ۱. معماری بلوتوث Android.

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

HIDL

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

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

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

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