
Android bietet einen Standard-Bluetooth-Stack, der sowohl Classic Bluetooth als auch Bluetooth Low Energy (BLE) unterstützt. Mit Bluetooth können Android-Geräte Personal Area Networks erstellen, um Daten mit Bluetooth-Geräten in der Nähe zu senden und zu empfangen.
In Android 4.3 und höher bietet der Android-Bluetooth-Stack die Möglichkeit, BLE zu implementieren. Wenn Sie die BLE-APIs vollständig nutzen möchten, folgen Sie den Android-Bluetooth-HCI-Anforderungen. Android-Geräte mit einem qualifizierten Chipsatz können entweder Classic Bluetooth oder sowohl Classic Bluetooth als auch BLE implementieren. BLE ist nicht abwärtskompatibel mit älteren Bluetooth-Chipsätzen.
In Android 8.0 ist der Bluetooth-Stack vollständig für Bluetooth 5 qualifiziert. Um die verfügbaren Bluetooth 5-Funktionen zu nutzen, muss das Gerät einen für Bluetooth 5 qualifizierten Chipsatz haben.
Android-Architektur
Eine Bluetooth-App kommuniziert über Binder mit dem Bluetooth-Prozess. Der Bluetooth-Prozess verwendet die Java Native Interface (JNI), um mit dem Bluetooth-Stack zu kommunizieren, und bietet Entwicklern Zugriff auf verschiedene Bluetooth-Profile. Dieses Diagramm zeigt die allgemeine Struktur des Bluetooth-Stacks:

Abbildung 1 : Android-Bluetooth-Architektur
- App-Framework
- Auf der Ebene des App-Frameworks befindet sich der App-Code, der die
android.bluetooth-APIs verwendet, um mit der Bluetooth-Hardware zu interagieren. Intern ruft dieser Code den Bluetooth-Prozess über den Binder-IPC-Mechanismus auf. - Bluetooth-App
- Die Bluetooth-App, die sich in
packages/modules/Bluetooth/android/appbefindet, ist als Android-App verpackt und implementiert die Bluetooth-Profile auf der Android-Framework-Ebene. Diese App ruft den Bluetooth-Stack über JNI auf. - JNI
- Der JNI-Code, der mit
android.bluetoothverknüpft ist, befindet sich inpackages/modules/Bluetooth/android/app/jni. Der JNI-Code ruft den Bluetooth-Stack auf, wenn bestimmte Bluetooth-Vorgänge ausgeführt werden, z. B. wenn Geräte erkannt werden. - Bluetooth-Stack
- Der Standard-Bluetooth-Stack ist in AOSP verfügbar und befindet sich in
packages/modules/Bluetooth/system. Der Stack implementiert die generische Bluetooth-HAL und passt sie mit Erweiterungen und Konfigurationsänderungen an. - Anbieterimplementierung
- Geräte von Anbietern interagieren mit dem Bluetooth-Stack über die HAL-Schnittstellendefinitionssprache (HIDL).
HIDL
HIDL definiert die Schnittstelle zwischen dem
Bluetooth-Stack und der Anbieterimplementierung. Um die Bluetooth-HIDL-Dateien zu generieren, übergeben Sie die Bluetooth-Schnittstellendateien an das HIDL-Generierungstool. Die Schnittstellendateien befinden sich in
hardware/interfaces/bluetooth.
Entwicklung des Bluetooth-Stacks
Der Android-Bluetooth-Stack ist ein vollständig qualifizierter Bluetooth-Stack. Die Qualifizierungsliste finden Sie auf der Website der Bluetooth SIG (Anmeldung erforderlich) unter QDID 169365.
Der Kern-Bluetooth-Stack befindet sich in
packages/modules/Bluetooth.
Die Entwicklung erfolgt in AOSP und Beiträge sind willkommen.