O Android fornece uma pilha Bluetooth padrão compatível com Bluetooth clássico e Bluetooth Low Energy. Usando 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 posterior, a pilha Bluetooth do Android oferece a capacidade de implementar o Bluetooth Low Energy (BLE). Para aproveitar totalmente as APIs BLE, siga os Requisitos do Android Bluetooth HCI . Dispositivos Android com um chipset qualificado podem implementar Bluetooth clássico ou Bluetooth clássico e BLE. BLE não é compatível com chipsets Bluetooth mais antigos.
No Android 8.0, a pilha Bluetooth nativa é totalmente qualificada para Bluetooth 5. Para usar os recursos Bluetooth 5 disponíveis, 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:
- 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/apps/Bluetooth
, é empacotado como um aplicativo Android e implementa os serviços e perfis Bluetooth na camada de estrutura do Android. Este aplicativo chama a pilha Bluetooth nativa via JNI. - JNI
- O código JNI associado a android.bluetooth está localizado em
packages/apps/Bluetooth/jni
. O código JNI chama a pilha Bluetooth quando ocorrem determinadas operações Bluetooth, como quando os dispositivos são descobertos. - pilha Bluetooth
- A pilha Bluetooth padrão é fornecida em AOSP 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. - Implementação do fornecedor
- Os dispositivos do fornecedor interagem com a pilha Bluetooth usando o Hardware Interface Design Language (HIDL).
HIDL
HIDL define a interface entre a pilha Bluetooth e a implementação do fornecedor. Para gerar os arquivos HIDL Bluetooth, passe os arquivos de 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 sob QDID 169365 .
A pilha principal do Bluetooth reside em system/bt
. O desenvolvimento acontece no AOSP, e contribuições são bem-vindas.
Arquitetura do Android 7.xe anterior
Um serviço de sistema Bluetooth se comunica com a pilha Bluetooth por meio de JNI e com aplicativos por meio do Binder IPC. O serviço do sistema fornece aos desenvolvedores acesso a vários perfis de Bluetooth. Este diagrama mostra a estrutura geral da pilha Bluetooth:
- 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 de estrutura do 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 chama a camada HAL e recebe retornos de chamada do HAL quando ocorrem determinadas operações Bluetooth, como quando os 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 oshardware/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 fornecedores
- Para adicionar extensões personalizadas e uma camada HCI para rastreamento, você pode criar um módulo libbt-vendor e especificar esses componentes.
Implementação do 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 .