Bluetooth

Ikona Android Bluetooth HAL

Android udostępnia domyślny stos Bluetooth, który obsługuje zarówno Bluetooth Classic, jak i Bluetooth Low Energy (BLE). Za pomocą Bluetooth urządzenia z Androidem mogą tworzyć osobiste sieci lokalne do wysyłania i odbierania danych z urządzeń Bluetooth znajdujących się w pobliżu.

W Androidzie 4.3 i nowszych wersjach stos Bluetooth Androida umożliwia implementację BLE. Aby w pełni korzystać z interfejsów BLE API, postępuj zgodnie z wymaganiami Android Bluetooth HCI. Urządzenia z Androidem z kwalifikowanym chipsetem mogą implementować Bluetooth Classic lub Bluetooth Classic i BLE. BLE nie jest wstecznie zgodny ze starszymi chipsetami Bluetooth.

W Androidzie 8.0 stos Bluetooth jest w pełni kwalifikowany do Bluetooth 5. Aby korzystać z dostępnych funkcji Bluetooth 5, urządzenie musi mieć chipset kwalifikowany do Bluetooth 5.

Architektura Androida

Aplikacja Bluetooth komunikuje się z procesem Bluetooth za pomocą Bindera. Proces Bluetooth używa interfejsu Java Native Interface (JNI) do komunikowania się ze stosem Bluetooth i zapewnia deweloperom dostęp do różnych profili Bluetooth. Ten diagram przedstawia ogólną strukturę stosu Bluetooth:

Diagram przedstawiający warstwy stosu Bluetooth w Androidzie.

Rysunek 1. Architektura Bluetooth w Androidzie.

framework aplikacji
Na poziomie frameworka aplikacji znajduje się kod aplikacji, który używa android.bluetooth interfejsów API do interakcji ze sprzętem Bluetooth. Wewnętrznie ten kod wywołuje proces Bluetooth za pomocą mechanizmu Binder IPC.
Aplikacja Bluetooth
Aplikacja Bluetooth, która znajduje się w packages/modules/Bluetooth/android/app, jest spakowana jako aplikacja na Androida i implementuje profile Bluetooth na warstwie frameworka Androida. Ta aplikacja wywołuje stos Bluetooth za pomocą JNI.
JNI
Kod JNI powiązany z android.bluetooth znajduje się w packages/modules/Bluetooth/android/app/jni. Kod JNI wywołuje stos Bluetooth, gdy występują określone operacje Bluetooth, np. gdy wykrywane są urządzenia.
Stos Bluetooth
Domyślny stos Bluetooth jest dostępny w AOSP i znajduje się w packages/modules/Bluetooth/system. Stos implementuje ogólny Bluetooth HAL i dostosowuje go za pomocą rozszerzeń i zmian konfiguracji.
implementacja dostawcy
Urządzenia dostawcy wchodzą w interakcję ze stosem Bluetooth za pomocą języka definicji interfejsu HAL (HIDL).

HIDL

HIDL definiuje interfejs między stosem Bluetooth a implementacją dostawcy. Aby wygenerować pliki Bluetooth HIDL, przekaż pliki interfejsu Bluetooth do narzędzia do generowania HIDL. Pliki interfejsu znajdują się w hardware/interfaces/bluetooth.

Tworzenie stosu Bluetooth

Stos Bluetooth Androida jest w pełni kwalifikowanym stosem Bluetooth. Lista kwalifikacji znajduje się na stronie Bluetooth SIG (wymaga logowania) w sekcji QDID 169365.

Główny stos Bluetooth znajduje się w packages/modules/Bluetooth. Prace rozwojowe są prowadzone w AOSP, a wszelkie zaangażowanie w jego rozwój jest mile widziane.