Bluetooth

Ícone da HAL do Bluetooth do Android

O Android oferece uma pilha Bluetooth padrão que é compatível com o Bluetooth clássico e o Bluetooth de baixa energia (BLE). Usando o Bluetooth, os dispositivos Android podem criar redes de área pessoal para enviar e receber dados com dispositivos Bluetooth próximos.

No Android 4.3 e versões mais recentes, a pilha Bluetooth do Android oferece a capacidade de implementar BLE. Para usar totalmente as APIs BLE, siga os Requisitos de HCI do Bluetooth do Android. Dispositivos Android com um chipset qualificado podem implementar o Bluetooth clássico ou os dois. O BLE não é compatível com versões anteriores de chipsets Bluetooth.

No Android 8.0, a pilha Bluetooth é totalmente qualificada para Bluetooth 5. Para usar os recursos disponíveis do Bluetooth 5, o dispositivo precisa ter um chipset qualificado para Bluetooth 5.

Arquitetura do Android

Um app Bluetooth se comunica com o processo Bluetooth usando o Binder. O processo do Bluetooth usa a Java Native Interface (JNI) para se comunicar com a pilha do Bluetooth e oferece aos desenvolvedores acesso a vários perfis do Bluetooth. Este diagrama mostra a estrutura geral da pilha do Bluetooth:

Diagrama mostrando as camadas da pilha Bluetooth do Android.

Figura 1. Arquitetura do Bluetooth do Android.

framework de app
No nível do framework do app, há o código do app, que usa as APIs android.bluetooth para interagir com o hardware Bluetooth. Internamente, esse código chama o processo Bluetooth pelo mecanismo Binder IPC.
App Bluetooth
O app Bluetooth, localizado em packages/modules/Bluetooth/android/app, é empacotado como um app Android e implementa os perfis Bluetooth na camada do framework Android. Esse app chama a pilha Bluetooth usando a JNI.
JNI
O código JNI associado a android.bluetooth está localizado em packages/modules/Bluetooth/android/app/jni. O código JNI chama a pilha Bluetooth quando determinadas operações Bluetooth ocorrem, como quando os dispositivos são descobertos.
Pilha Bluetooth
A pilha Bluetooth padrão é fornecida no AOSP e está localizada em packages/modules/Bluetooth/system. A pilha implementa a HAL genérica do Bluetooth e a personaliza com extensões e mudanças de configuração.
implementação do fornecedor
Os dispositivos do fornecedor interagem com a pilha Bluetooth usando a linguagem de definição de interface HAL (HIDL).

HIDL

O HIDL define a interface entre a pilha Bluetooth e a implementação do fornecedor. Para gerar os arquivos HIDL do Bluetooth, transmita os arquivos de interface do Bluetooth para a ferramenta de geração do HIDL. Os arquivos de interface estão localizados em hardware/interfaces/bluetooth.

Desenvolvimento de pilha Bluetooth

A pilha Bluetooth do Android é totalmente qualificada. A lista de qualificação está no site da Bluetooth SIG (requer login) em QDID 169365.

A pilha Bluetooth principal reside em packages/modules/Bluetooth. O desenvolvimento acontece no AOSP, e as contribuições são bem-vindas.