Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Bluetooth

Android Bluetooth HAL-Symbol

Android bietet einen Standard-Bluetooth-Stack, der sowohl klassisches Bluetooth als auch Bluetooth Low Energy unterstützt. Mithilfe von Bluetooth können Android-Geräte persönliche Netzwerke 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, Bluetooth Low Energy (BLE) zu implementieren. Befolgen Sie die Android Bluetooth HCI-Anforderungen , um die BLE-APIs optimal nutzen zu können . 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 native Bluetooth-Stack vollständig für Bluetooth 5 qualifiziert. Um die verfügbaren Bluetooth 5-Funktionen nutzen zu können, muss das Gerät über einen Bluetooth 5-qualifizierten Chipsatz verfügen.

Android 8.0 Architektur

Eine Bluetooth-Anwendung kommuniziert über Binder mit dem Bluetooth-Prozess. Der Bluetooth-Prozess verwendet JNI zur Kommunikation mit dem Bluetooth-Stack und bietet Entwicklern Zugriff auf verschiedene Bluetooth-Profile. Dieses Diagramm zeigt die allgemeine Struktur des Bluetooth-Stacks:

Bluetooth-Architektur für Android 8.0
Abbildung 1. Bluetooth-Architektur für Android 8.0
Anwendungsrahmen
Auf der Ebene des Anwendungsframeworks befindet sich der Anwendungscode, 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-Systemdienst
Der Bluetooth-Systemdienst in packages/apps/Bluetooth ist als Android-App verpackt und implementiert die Bluetooth-Dienste und -Profile auf der Android-Framework-Ebene. Diese App ruft über JNI den nativen Bluetooth-Stack auf.
JNI
Der mit android.bluetooth verknüpfte JNI-Code befindet sich in packages/apps/Bluetooth/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 wird in AOSP bereitgestellt und befindet sich in system/bt . Der Stack implementiert das generische Bluetooth HAL und passt es mit Erweiterungen und Konfigurationsänderungen an.
Implementierung des Anbieters
Herstellergeräte interagieren mit dem Bluetooth-Stack mithilfe der Hardware Interface Design Language (HIDL).

HIDL

HIDL definiert die Schnittstelle zwischen dem Bluetooth-Stack und der Herstellerimplementierung. Übergeben Sie zum Generieren der Bluetooth-HIDL-Dateien die Bluetooth-Schnittstellendateien an das HIDL-Generierungstool. Die Schnittstellendateien befinden sich in hardware/interfaces/bluetooth .

Bluetooth-Stack-Entwicklung

Der Android 8.0 Bluetooth-Stack ist ein voll qualifizierter Bluetooth-Stack. Die Qualifikationsliste befindet sich auf der Bluetooth SIG-Website unter QDID 97584 .

Der Kern-Bluetooth-Stack befindet sich in system/bt . Die Entwicklung erfolgt in AOSP, und Beiträge sind willkommen.

Android 7.x und frühere Architektur

Ein Bluetooth-Systemdienst kommuniziert mit dem Bluetooth-Stack über JNI und mit Anwendungen über Binder IPC. Der Systemdienst bietet Entwicklern Zugriff auf verschiedene Bluetooth-Profile. Dieses Diagramm zeigt die allgemeine Struktur des Bluetooth-Stacks:

Android Bluetooth-Architektur
Abbildung 2. Bluetooth-Architektur für Android 7.x und frühere Versionen
Anwendungsrahmen
Auf der Ebene des Anwendungsframeworks befindet sich der Anwendungscode, 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-Systemdienst
Der Bluetooth-Systemdienst in packages/apps/Bluetooth ist als Android-App verpackt und implementiert den Bluetooth-Dienst und die Profile auf der Android-Framework-Ebene. Diese App ruft über JNI die HAL-Schicht auf.
JNI
Der mit android.bluetooth verknüpfte JNI-Code befindet sich in packages/apps/Bluetooth/jni . Der JNI-Code ruft die HAL-Schicht auf und empfängt Rückrufe von der HAL, wenn bestimmte Bluetooth-Vorgänge auftreten, z. B. wenn Geräte erkannt werden.
Hal
Die Hardware-Abstraktionsschicht definiert die Standardschnittstelle, über die die android.bluetooth- APIs und der Bluetooth-Prozess aufrufen und die Sie implementieren müssen, damit Ihre Bluetooth-Hardware ordnungsgemäß funktioniert. Die Header-Datei für Bluetooth HAL lautet hardware/libhardware/include/hardware/bluetooth.h . Überprüfen Sie außerdem alle Dateien hardware/libhardware/include/hardware/bt_*.h
Bluetooth-Stack
Der Standard-Bluetooth-Stack wird für Sie bereitgestellt und befindet sich in system/bt . Der Stack implementiert das generische Bluetooth HAL und passt es mit Erweiterungen und Konfigurationsänderungen an.
Herstellererweiterungen
Um benutzerdefinierte Erweiterungen und eine HCI-Schicht für die Ablaufverfolgung hinzuzufügen, können Sie ein libbt-vendor-Modul erstellen und diese Komponenten angeben.

Implementierung der HAL

Die Bluetooth-HAL befindet sich unter /hardware/libhardware/include/hardware/bluetooth.h . Die Datei bluetooth.h enthält die grundlegende Schnittstelle für den Bluetooth-Stack, und Sie müssen seine Funktionen implementieren.

Profilspezifische Dateien befinden sich im selben Verzeichnis. Weitere Informationen finden Sie in der HAL-Dateireferenz .