Android udostępnia domyślny stos Bluetooth, który obsługuje zarówno klasyczny Bluetooth, jak i Bluetooth Low Energy. Dzięki technologii Bluetooth urządzenia z systemem Android mogą tworzyć sieci osobiste w celu wysyłania i odbierania danych za pomocą pobliskich urządzeń Bluetooth.
W systemie Android 4.3 i nowszych stos Android Bluetooth umożliwia implementację Bluetooth Low Energy (BLE). Aby w pełni wykorzystać interfejsy API BLE, postępuj zgodnie z wymaganiami Androida Bluetooth HCI . Urządzenia z systemem Android z odpowiednim chipsetem mogą implementować klasyczny Bluetooth lub zarówno klasyczny Bluetooth, jak i BLE. BLE nie jest wstecznie kompatybilny ze starszymi chipsetami Bluetooth.
W systemie Android 8.0 natywny stos Bluetooth jest w pełni zgodny z Bluetooth 5. Aby móc korzystać z dostępnych funkcji Bluetooth 5, urządzenie musi mieć chipset obsługujący technologię Bluetooth 5.
Architektura Androida
Aplikacja Bluetooth komunikuje się z procesem Bluetooth za pośrednictwem Bindera. Proces Bluetooth wykorzystuje JNI do komunikacji ze stosem Bluetooth i zapewnia programistom dostęp do różnych profili Bluetooth. Ten diagram przedstawia ogólną strukturę stosu Bluetooth:
- Ramy aplikacji
- Na poziomie struktury aplikacji znajduje się kod aplikacji, który wykorzystuje interfejsy API systemu Android.bluetooth do interakcji ze sprzętem Bluetooth. Wewnętrznie ten kod wywołuje proces Bluetooth poprzez mechanizm Binder IPC.
- Aplikacja Bluetooth
- Aplikacja Bluetooth, zlokalizowana w
packages/modules/Bluetooth/android/app
, jest spakowana jako aplikacja na Androida i implementuje profile Bluetooth w warstwie frameworka Androida. Ta aplikacja wywołuje natywny stos Bluetooth za pośrednictwem 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ąpią określone operacje Bluetooth, na przykład gdy zostaną wykryte urządzenia. - Stos Bluetooth
- Domyślny stos Bluetooth jest dostępny w AOSP i znajduje się w
packages/modules/Bluetooth/system
. Stos implementuje ogólną warstwę Bluetooth HAL i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracyjnych. - Implementacja dostawcy
- Urządzenia dostawców komunikują się ze stosem Bluetooth przy użyciu języka projektowania interfejsu sprzętowego (HIDL).
HIDL
HIDL definiuje interfejs pomiędzy stosem Bluetooth a implementacją dostawcy. Aby wygenerować pliki Bluetooth HIDL, przekaż pliki interfejsu Bluetooth do narzędzia generowania HIDL. Pliki interfejsu znajdują się w hardware/interfaces/bluetooth
.
Rozwój stosu Bluetooth
Stos Bluetooth systemu Android to w pełni kwalifikowany stos Bluetooth. Lista kwalifikacji znajduje się na stronie internetowej Bluetooth SIG pod numerem QDID 169365 .
Rdzeń stosu Bluetooth znajduje się w packages/modules/Bluetooth
. Rozwój odbywa się w AOSP, a wkład jest mile widziany.
Architektura Androida 7.x i wcześniejszych
Usługa systemowa Bluetooth komunikuje się ze stosem Bluetooth za pośrednictwem JNI i z aplikacjami za pośrednictwem Binder IPC. Usługa systemowa zapewnia programistom dostęp do różnych profili Bluetooth. Ten diagram przedstawia ogólną strukturę stosu Bluetooth:
- Ramy aplikacji
- Na poziomie struktury aplikacji znajduje się kod aplikacji, który wykorzystuje interfejsy API systemu Android.bluetooth do interakcji ze sprzętem Bluetooth. Wewnętrznie ten kod wywołuje proces Bluetooth poprzez mechanizm Binder IPC.
- Usługa systemu Bluetooth
- Usługa systemowa Bluetooth, zlokalizowana w
packages/apps/Bluetooth
, jest spakowana jako aplikacja na Androida i implementuje usługę i profile Bluetooth w warstwie frameworka 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, gdy wystąpią określone operacje Bluetooth, na przykład gdy zostaną wykryte urządzenia. - HAL
- Warstwa abstrakcji sprzętu definiuje standardowy interfejs, z którego korzystają interfejsy API systemu Android.bluetooth i proces Bluetooth, i który należy zaimplementować, aby sprzęt Bluetooth działał prawidłowo. Plik nagłówkowy warstwy HAL Bluetooth to
hardware/libhardware/include/hardware/bluetooth.h
. Dodatkowo przejrzyj wszystkie plikihardware/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ę Bluetooth HAL i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracyjnych. - Rozszerzenia dostawcy
- Aby dodać niestandardowe rozszerzenia i warstwę HCI do śledzenia, możesz utworzyć moduł libbbt-vendor i określić te komponenty.
Implementacja HAL-a
Bluetooth HAL znajduje się w /hardware/libhardware/include/hardware/bluetooth.h
. Plik bluetooth.h
zawiera podstawowy interfejs stosu Bluetooth i należy zaimplementować jego funkcje.
Pliki specyficzne dla profilu znajdują się w tym samym katalogu. Aby uzyskać szczegółowe informacje, zobacz Dokumentacja pliku HAL .