Bluetooth

Ikona HAL Bluetooth na Androida

Android zapewnia domyślny stos Bluetooth, który obsługuje zarówno klasyczny Bluetooth, jak i Bluetooth Low Energy. Korzystając z technologii Bluetooth, urządzenia z systemem Android mogą tworzyć sieci osobiste w celu wysyłania i odbierania danych z pobliskich urządzeń Bluetooth.

W systemie Android 4.3 i nowszych stos Android Bluetooth zapewnia możliwość implementacji technologii Bluetooth Low Energy (BLE). Aby w pełni wykorzystać interfejsy API BLE, postępuj zgodnie z wymaganiami Android Bluetooth HCI . Urządzenia z systemem Android z kwalifikowanym chipsetem mogą implementować klasyczny Bluetooth lub klasyczny Bluetooth i BLE. BLE nie jest wstecznie kompatybilny ze starszymi chipsetami Bluetooth.

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

Architektura Androida

Aplikacja Bluetooth komunikuje się z procesem Bluetooth przez Binder. Proces Bluetooth używa JNI do komunikacji ze stosem Bluetooth i zapewnia programistom dostęp do różnych profili Bluetooth. Ten diagram pokazuje ogólną strukturę stosu Bluetooth:

Architektura Bluetooth Androida
Rysunek 1. Architektura Bluetooth Android
Ramy aplikacji
Na poziomie struktury aplikacji znajduje się kod aplikacji, który wykorzystuje interfejsy API android.bluetooth do interakcji ze sprzętem Bluetooth. Wewnętrznie ten kod wywołuje proces Bluetooth za pośrednictwem mechanizmu Binder IPC.
Usługa systemu Bluetooth
Usługa systemu Bluetooth, znajdująca się w packages/apps/Bluetooth , jest spakowana jako aplikacja dla systemu Android i implementuje usługi i profile Bluetooth w warstwie struktury systemu Android. Ta aplikacja wywołuje natywny stos Bluetooth za pośrednictwem JNI.
JNI
Kod JNI powiązany z android.bluetooth znajduje się w packages/apps/Bluetooth/jni . Kod JNI wywołuje stos Bluetooth, gdy występują pewne operacje Bluetooth, takie jak wykrycie urządzeń.
Stos Bluetooth
Domyślny stos Bluetooth jest dostarczany w AOSP i znajduje się w system/bt . Stos implementuje ogólną warstwę HAL Bluetooth i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracji.
Wdrożenie dostawcy
Urządzenia dostawcy współdziałają ze stosem Bluetooth przy użyciu języka projektowania interfejsu sprzętowego (HIDL).

HIDL

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

Rozwój stosu Bluetooth

Stos Bluetooth Androida to w pełni kwalifikowany stos Bluetooth. Lista kwalifikacji znajduje się na stronie internetowej Bluetooth SIG pod QDID 169365 .

Rdzeń stosu Bluetooth znajduje się w system/bt . Rozwój odbywa się w AOSP, a składki są mile widziane.

Architektura Android 7.x i wcześniejsze earlier

Usługa systemu Bluetooth komunikuje się ze stosem Bluetooth za pośrednictwem JNI, a z aplikacjami za pośrednictwem Binder IPC. Usługa systemowa zapewnia programistom dostęp do różnych profili Bluetooth. Ten diagram pokazuje ogólną strukturę stosu Bluetooth:

Architektura Bluetooth Androida
Rysunek 2. Architektura Bluetooth w systemie Android 7.x i wcześniejszych
Ramy aplikacji
Na poziomie struktury aplikacji znajduje się kod aplikacji, który wykorzystuje interfejsy API android.bluetooth do interakcji ze sprzętem Bluetooth. Wewnętrznie ten kod wywołuje proces Bluetooth za pośrednictwem mechanizmu Binder IPC.
Usługa systemu Bluetooth
Usługa systemu Bluetooth, znajdująca się w packages/apps/Bluetooth , jest spakowana jako aplikacja na Androida i implementuje usługę i profile Bluetooth w warstwie szkieletowej systemu Android. Ta aplikacja wywołuje warstwę HAL za pośrednictwem JNI.
JNI
Kod JNI powiązany z android.bluetooth znajduje się w packages/apps/Bluetooth/jni . Kod JNI wywołuje warstwę HAL i odbiera wywołania zwrotne z warstwy HAL w przypadku wystąpienia pewnych operacji Bluetooth, takich jak wykrycie urządzeń.
HAL
Warstwa abstrakcji sprzętu definiuje standardowy interfejs, do któregoodwołują się interfejsy APIandroid.bluetooth i proces Bluetooth, i który należy zaimplementować, aby sprzęt Bluetooth działał poprawnie. Plik nagłówkowy dla hardware/libhardware/include/hardware/bluetooth.h HAL Bluetooth to hardware/libhardware/include/hardware/bluetooth.h . Ponadto hardware/libhardware/include/hardware/bt_*.h wszystkie hardware/libhardware/include/hardware/bt_*.h .
Stos Bluetooth
Domyślny stos Bluetooth jest dostępny i znajduje się w system/bt . Stos implementuje ogólną warstwę HAL Bluetooth i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracji.
Rozszerzenia dostawcy
Aby dodać niestandardowe rozszerzenia i warstwę HCI do śledzenia, możesz utworzyć moduł dostawcy libbt i określić te komponenty.

Wdrażanie HAL

HAL Bluetooth znajduje się w /hardware/libhardware/include/hardware/bluetooth.h . Plik bluetooth.h zawiera podstawowy interfejs dla stosu Bluetooth i musisz zaimplementować jego funkcje.

Pliki specyficzne dla profilu znajdują się w tym samym katalogu. Aby uzyskać szczegółowe informacje, zobacz Odwołanie do pliku HAL .