Bluetooth

Ícone do Android Bluetooth HAL

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:

Arquitetura Bluetooth Android
Figura 1. Arquitetura Bluetooth do Android
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:

Arquitetura Bluetooth Android
Figura 2. Arquitetura Bluetooth do Android 7.xe anterior
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 os hardware/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 .