Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Bluetooth

Ikona Android Bluetooth HAL

Android zapewnia domyślny stos Bluetooth, który obsługuje zarówno klasyczną technologię Bluetooth, jak i technologię Bluetooth Low Energy. Korzystając z Bluetooth, urządzenia z Androidem 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 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 odpowiednim chipsetem mogą obsługiwać zarówno klasyczną technologię Bluetooth, jak i klasyczną technologię Bluetooth 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 technologią Bluetooth 5. Aby korzystać z dostępnych funkcji Bluetooth 5, urządzenie musi mieć chipset zgodny z technologią Bluetooth 5.

Architektura systemu Android 8.0

Aplikacja Bluetooth komunikuje się z procesem Bluetooth przez Binder. 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:

Architektura Bluetooth systemu Android 8.0
Rysunek 1. Architektura Bluetooth systemu Android 8.0
Ramy aplikacji
Na poziomie struktury aplikacji jest kod aplikacji, który wykorzystuje 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ługi i profile Bluetooth w warstwie struktury Androida. 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 w przypadku wystąpienia pewnych operacji Bluetooth, na przykład wykrycia urządzeń.
Stos Bluetooth
Domyślny stos Bluetooth jest dostarczany w AOSP i znajduje się w system/bt . Stos implementuje ogólną Bluetooth HAL i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracji.
Wdrożenie dostawcy
Urządzenia dostawców współpracują ze stosem Bluetooth za pomocą 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 generowania HIDL. Pliki interfejsu znajdują się w folderze hardware/interfaces/bluetooth .

Rozwój stosu Bluetooth

Stos Bluetooth systemu Android 8.0 to w pełni kwalifikowany stos Bluetooth. Lista kwalifikacji znajduje się w witrynie internetowej Bluetooth SIG pod numerem QDID 97584 .

Podstawowy stos Bluetooth znajduje się w system/bt . Rozwój odbywa się w AOSP, a wkłady są mile widziane.

Architektura systemu Android 7.xi wcześniejszych

Usługa systemu Bluetooth komunikuje się ze stosem Bluetooth za pośrednictwem JNI iz 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:

Architektura Bluetooth w systemie Android
Rysunek 2. Architektura Bluetooth w systemie Android 7.xi starszej
Ramy aplikacji
Na poziomie struktury aplikacji jest kod aplikacji, który wykorzystuje 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, zlokalizowana w packages/apps/Bluetooth , jest spakowana jako aplikacja na Androida i implementuje usługę i profile Bluetooth w warstwie struktury Androida. 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 wykryte zostaną urządzenia.
HAL
Warstwa abstrakcji sprzętu definiuje standardowy interfejs, do którego wywołują interfejsy API android.bluetooth i procesy Bluetooth, i który należy zaimplementować, aby sprzęt Bluetooth działał poprawnie. Plik nagłówkowy hardware/libhardware/include/hardware/bluetooth.h Bluetooth HAL to hardware/libhardware/include/hardware/bluetooth.h . Dodatkowo 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ą Bluetooth HAL i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracji.
Rozszerzenia dostawcy
Aby dodać niestandardowe rozszerzenia i warstwę HCI do śledzenia, można 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 stosu Bluetooth i musisz zaimplementować jego funkcje.

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