
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 o BLE. Para usar totalmente as APIs BLE, siga os requisitos de HCI do Bluetooth do Android. Os dispositivos Android com um chipset qualificado podem implementar o Bluetooth clássico ou o Bluetooth clássico e o BLE. O BLE não é compatível com versões anteriores de chipsets Bluetooth.
No Android 8.0, a pilha Bluetooth é totalmente qualificada para o Bluetooth 5. Para usar os recursos disponíveis do Bluetooth 5, o dispositivo precisa ter um chipset qualificado para o Bluetooth 5.
Arquitetura do Android
Um app Bluetooth se comunica com o processo Bluetooth pelo Binder. O processo Bluetooth usa a Java Native Interface (JNI) para se comunicar com a pilha Bluetooth e oferece aos desenvolvedores acesso a vários perfis Bluetooth. Este diagrama mostra a estrutura geral da pilha Bluetooth:

Figura 1. Arquitetura do Bluetooth do Android.
- framework do app
- No nível do framework do app, há o código do app, que usa as
android.bluetoothAPIs para interagir com o hardware Bluetooth. Internamente, esse código chama o processo Bluetooth pelo mecanismo IPC do Binder. - 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 do Android. Esse app chama a pilha Bluetooth pelo JNI. - JNI
- O código JNI associado a
android.bluetoothestá 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 Bluetooth genérica 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 da pilha Bluetooth
A pilha Bluetooth do Android é uma pilha Bluetooth totalmente qualificada. A lista de qualificação está no site do Bluetooth SIG (link em inglês, 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.