Android udostępnia domyślny stos Bluetooth, który obsługuje zarówno Bluetooth Classic, jak i Bluetooth Low Energy (BLE). Urządzenia z Androidem mogą tworzyć osobiste sieci bezprzewodowe, aby wysyłać i odbierać dane z urządzeń Bluetooth w pobliżu.
W Androidzie 4.3 i nowszym stos Bluetootha w Androidzie umożliwia wdrożenie BLE. Aby w pełni korzystać z interfejsów BLE API, postępuj zgodnie z wymaganiami dotyczącymi interfejsu HCI Bluetootha na Androidzie. Urządzenia z Androidem z odpowiednim chipsetem mogą obsługiwać klasyczną wersję Bluetootha lub obie wersje: klasyczną i BLE. BLE nie jest zgodny wstecznie ze starszymi chipsetami Bluetooth.
W Androidzie 8.0 stos Bluetootha jest w pełni zgodny ze standardem Bluetooth 5. Aby korzystać z dostępnych funkcji Bluetooth 5, urządzenie musi mieć certyfikowany chipset Bluetooth 5.
Architektura Androida
Aplikacja Bluetooth komunikuje się z procesem Bluetooth za pomocą interfejsu Binder. Proces Bluetootha używa interfejsu Java Native Interface (JNI) do komunikacji ze stosem Bluetootha i zapewnia deweloperom dostęp do różnych profili Bluetootha. Ten diagram przedstawia ogólną strukturę stosu Bluetooth:
Rysunek 1. Architektura Bluetootha na Androidzie.
- platforma aplikacji
- Na poziomie platformy aplikacji znajduje się kod aplikacji, który korzysta z interfejsów API
android.bluetooth
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 pakowana jako aplikacja na Androida i implementuje profile Bluetooth na warstwie platformy Androida. Ta aplikacja wywołuje stos Bluetooth za pomocą JNI. - JNI
- Kod JNI powiązany z
android.bluetooth
znajduje się wpackages/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ólną warstwę HAL Bluetooth i dostosowuje ją za pomocą rozszerzeń i zmian konfiguracji. - wdrażanie przez dostawcę,
- 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 lokalizacji hardware/interfaces/bluetooth
.
Tworzenie stosu Bluetooth
Stos Bluetooth w Androidzie jest w pełni kwalifikowanym stosem Bluetooth. Lista kwalifikacji znajduje się na stronie internetowej Bluetooth SIG (wymaga zalogowania) w sekcji QDID 169365.
Główny stos Bluetooth znajduje się w folderze
packages/modules/Bluetooth
.
Rozwój odbywa się w ramach AOSP, a każde zaangażowanie w ten proces jest mile widziane.