بلوتوث

نماد بلوتوث HAL اندروید

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

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

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

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

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

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

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

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

HIDL

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

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

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

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