Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Bluetooth

Icona HAL Bluetooth Android

Android fornisce uno stack Bluetooth predefinito che supporta sia il Bluetooth classico che il Bluetooth Low Energy. Utilizzando il Bluetooth, i dispositivi Android possono creare reti di area personale per inviare e ricevere dati con i dispositivi Bluetooth nelle vicinanze.

In Android 4.3 e versioni successive, lo stack Bluetooth Android offre la possibilità di implementare Bluetooth Low Energy (BLE). Per sfruttare appieno le API BLE, segui i requisiti HCI Bluetooth per Android . I dispositivi Android con un chipset qualificato possono implementare Classic Bluetooth o sia Classic Bluetooth e BLE. BLE non è retrocompatibile con i vecchi chipset Bluetooth.

In Android 8.0, lo stack Bluetooth nativo è pienamente qualificato per Bluetooth 5. Per utilizzare le funzioni Bluetooth 5 disponibili, il dispositivo deve disporre di un chipset qualificato Bluetooth 5.

Architettura Android 8.0

Un'applicazione Bluetooth comunica con il processo Bluetooth tramite Binder. Il processo Bluetooth utilizza JNI per comunicare con lo stack Bluetooth e fornisce agli sviluppatori l'accesso a vari profili Bluetooth. Questo diagramma mostra la struttura generale dello stack Bluetooth:

Architettura Bluetooth Android 8.0
Figura 1. Architettura Bluetooth Android 8.0
Framework dell'applicazione
A livello di framework dell'applicazione c'è il codice dell'applicazione, che utilizza le API android.bluetooth per interagire con l'hardware Bluetooth. Internamente, questo codice chiama il processo Bluetooth tramite il meccanismo IPC di Binder.
Servizio di sistema Bluetooth
Il servizio di sistema Bluetooth, che si trova in packages/apps/Bluetooth , è confezionato come un'app Android e implementa i servizi ei profili Bluetooth a livello del framework Android. Questa app chiama lo stack Bluetooth nativo tramite JNI.
JNI
Il codice JNI associato ad android.bluetooth si trova in packages/apps/Bluetooth/jni . Il codice JNI chiama nello stack Bluetooth quando si verificano determinate operazioni Bluetooth, ad esempio quando vengono rilevati i dispositivi.
Stack Bluetooth
Lo stack Bluetooth predefinito è fornito in AOSP e si trova in system/bt . Lo stack implementa il Bluetooth HAL generico e lo personalizza con estensioni e modifiche alla configurazione.
Implementazione del fornitore
I dispositivi del fornitore interagiscono con lo stack Bluetooth utilizzando HIDL (Hardware Interface Design Language).

HIDL

HIDL definisce l'interfaccia tra lo stack Bluetooth e l'implementazione del fornitore. Per generare i file HIDL Bluetooth, passare i file dell'interfaccia Bluetooth nello strumento di generazione HIDL. I file di interfaccia si trovano in hardware/interfaces/bluetooth .

Sviluppo dello stack Bluetooth

Lo stack Bluetooth di Android 8.0 è uno stack Bluetooth completamente qualificato. L'elenco delle qualifiche si trova sul sito Web Bluetooth SIG con QDID 97584 .

Lo stack Bluetooth principale risiede in system/bt . Lo sviluppo avviene in AOSP e i contributi sono i benvenuti.

Architettura Android 7.x e versioni precedenti

Un servizio di sistema Bluetooth comunica con lo stack Bluetooth tramite JNI e con le applicazioni tramite Binder IPC. Il servizio di sistema fornisce agli sviluppatori l'accesso a vari profili Bluetooth. Questo diagramma mostra la struttura generale dello stack Bluetooth:

Architettura Bluetooth Android
Figura 2. Architettura Bluetooth di Android 7.x e versioni precedenti
Framework dell'applicazione
A livello di framework dell'applicazione c'è il codice dell'applicazione, che utilizza le API android.bluetooth per interagire con l'hardware Bluetooth. Internamente, questo codice chiama il processo Bluetooth tramite il meccanismo IPC di Binder.
Servizio di sistema Bluetooth
Il servizio di sistema Bluetooth, che si trova in packages/apps/Bluetooth , è confezionato come un'app Android e implementa il servizio ei profili Bluetooth a livello del framework Android. Questa app chiama il livello HAL tramite JNI.
JNI
Il codice JNI associato ad android.bluetooth si trova in packages/apps/Bluetooth/jni . Il codice JNI chiama il livello HAL e riceve callback dall'HAL quando si verificano determinate operazioni Bluetooth, ad esempio quando vengono rilevati i dispositivi.
HAL
Il livello di astrazione hardware definisce l'interfaccia standard a cui chiamano le API android.bluetooth e il processo Bluetooth e che è necessario implementare per far funzionare correttamente l'hardware Bluetooth. Il file di intestazione per l'HAL Bluetooth è hardware/libhardware/include/hardware/bluetooth.h . Inoltre, controlla tutti i file hardware/libhardware/include/hardware/bt_*.h
Stack Bluetooth
Lo stack Bluetooth predefinito viene fornito per te e si trova in system/bt . Lo stack implementa il Bluetooth HAL generico e lo personalizza con estensioni e modifiche alla configurazione.
Estensioni del fornitore
Per aggiungere estensioni personalizzate e un livello HCI per la traccia, è possibile creare un modulo libbt-vendor e specificare questi componenti.

Implementazione dell'HAL

L'HAL Bluetooth si trova in /hardware/libhardware/include/hardware/bluetooth.h . Il file bluetooth.h contiene l'interfaccia di base per lo stack Bluetooth ed è necessario implementarne le funzioni.

I file specifici del profilo si trovano nella stessa directory. Per i dettagli, vedere HAL File Reference .