
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:
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 empackages/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.