![Ícone Android Bluetooth HAL](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_hal_bluetooth.png?authuser=0&hl=pt-br)
O Android fornece uma pilha Bluetooth padrão que oferece suporte ao Bluetooth clássico e ao Bluetooth Low Energy. Usando o Bluetooth, os dispositivos Android podem criar redes de área pessoal para enviar e receber dados de dispositivos Bluetooth próximos.
No Android 4.3 e versões posteriores, a pilha Bluetooth do Android oferece a capacidade de implementar Bluetooth Low Energy (BLE). Para aproveitar totalmente as APIs BLE, siga os Requisitos de HCI do Android Bluetooth . Dispositivos Android com um chipset qualificado podem implementar Bluetooth clássico ou Bluetooth clássico e BLE. BLE não é compatível com versões anteriores de chipsets Bluetooth mais antigos.
No Android 8.0, a pilha Bluetooth nativa é 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 Android
Um aplicativo Bluetooth se comunica com o processo Bluetooth por meio do Binder. O processo Bluetooth usa JNI para se comunicar com a pilha Bluetooth e fornece aos desenvolvedores acesso a vários perfis Bluetooth. Este diagrama mostra a estrutura geral da pilha Bluetooth:
![Arquitetura Android Bluetooth](https://source.android.com/static/docs/core/connect/bluetooth/images/fluoride_architecture.png?authuser=0&hl=pt-br)
- Estrutura do aplicativo
- No nível da estrutura do aplicativo está o código do aplicativo, que usa as APIs android.bluetooth para interagir com o hardware Bluetooth. Internamente, esse código chama o processo Bluetooth por meio do mecanismo Binder IPC.
- Serviço do sistema Bluetooth
- O serviço do sistema Bluetooth, localizado em
packages/modules/Bluetooth/android/app
, é empacotado como um aplicativo Android e implementa os serviços e perfis Bluetooth na camada da estrutura Android. Este aplicativo chama a pilha Bluetooth nativa via 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 ocorrem determinadas operações Bluetooth, como quando dispositivos são descobertos. - Pilha Bluetooth
- A pilha Bluetooth padrão é fornecida no AOSP e está localizada em
packages/modules/Bluetooth
. A pilha implementa o Bluetooth HAL genérico e o personaliza com extensões e alterações de configuração. - Implementação do fornecedor
- Os dispositivos do fornecedor interagem com a pilha Bluetooth usando a linguagem de design de interface de hardware (HIDL).
HIDL
HIDL define a interface entre a pilha Bluetooth e a implementação do fornecedor. Para gerar os arquivos Bluetooth HIDL, passe os arquivos da interface Bluetooth para a ferramenta de geração HIDL. Os arquivos de interface estão localizados em hardware/interfaces/bluetooth
.
Desenvolvimento de pilha Bluetooth
A pilha Bluetooth do Android é uma pilha Bluetooth totalmente qualificada. A lista de qualificação está no site da Bluetooth SIG em QDID 169365 .
A pilha principal do Bluetooth reside em packages/modules/Bluetooth
. O desenvolvimento acontece no AOSP e contribuições são bem-vindas.
Arquitetura Android 7.xe anterior
Um serviço do sistema Bluetooth se comunica com a pilha Bluetooth por meio de JNI e com aplicativos por meio de Binder IPC. O serviço do sistema fornece aos desenvolvedores acesso a vários perfis Bluetooth. Este diagrama mostra a estrutura geral da pilha Bluetooth:
![Arquitetura Android Bluetooth](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_bluetooth.png?authuser=0&hl=pt-br)
- Estrutura do aplicativo
- No nível da estrutura do aplicativo está o código do aplicativo, que utiliza as APIs android.bluetooth para interagir com o hardware Bluetooth. Internamente, esse código chama o processo Bluetooth por meio do mecanismo Binder IPC.
- Serviço do sistema Bluetooth
- O serviço do sistema Bluetooth, localizado em
packages/apps/Bluetooth
, é empacotado como um aplicativo Android e implementa o serviço e os perfis Bluetooth na camada da estrutura Android. Este aplicativo chama a camada HAL via JNI. - JNI
- O código JNI associado a android.bluetooth está localizado em
packages/apps/Bluetooth/jni
. O código JNI faz chamadas para a camada HAL e recebe retornos de chamada do HAL quando ocorrem determinadas operações Bluetooth, como quando dispositivos são descobertos. - HAL
- A camada de abstração de hardware define a interface padrão que as APIs android.bluetooth e o processo Bluetooth chamam e que você deve implementar para que seu hardware Bluetooth funcione corretamente. O arquivo de cabeçalho para o Bluetooth HAL é
hardware/libhardware/include/hardware/bluetooth.h
. Além disso, revise todos os arquivoshardware/libhardware/include/hardware/bt_*.h
. - Pilha Bluetooth
- A pilha Bluetooth padrão é fornecida para você e está localizada em
system/bt
. A pilha implementa o Bluetooth HAL genérico e o personaliza com extensões e alterações de configuração. - Extensões de fornecedor
- Para adicionar extensões customizadas e uma camada HCI para rastreamento, é possível criar um módulo libbt-vendor e especificar esses componentes.
Implementando o HAL
O Bluetooth HAL está localizado em /hardware/libhardware/include/hardware/bluetooth.h
. O arquivo bluetooth.h
contém a interface básica para a pilha Bluetooth e você deve implementar suas funções.
Os arquivos específicos do perfil estão localizados no mesmo diretório. Para obter detalhes, consulte a Referência do arquivo HAL .