O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Bluetooth

Ícone de HAL do Bluetooth do Android

O Android fornece uma pilha Bluetooth padrão que suporta tanto o Bluetooth clássico quanto o Bluetooth de baixa energia. 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 posterior, a pilha Android Bluetooth fornece a capacidade de implementar Bluetooth Low Energy (BLE). Para aproveitar totalmente as APIs BLE, siga os Requisitos do Android Bluetooth HCI . Os dispositivos Android com um chipset qualificado podem implementar tanto o Bluetooth clássico quanto o 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 Bluetooth 5 disponíveis, o dispositivo precisa ter um chipset Bluetooth 5 qualificado.

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
Framework de aplicação
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 Android. Este aplicativo faz chamadas para a pilha Bluetooth nativa via JNI.
JNI
O código JNI associado ao android.bluetooth está localizado em packages/apps/Bluetooth/jni . O código JNI chama a pilha Bluetooth quando certas operações Bluetooth ocorrem, como quando dispositivos são descobertos.
Pilha Bluetooth
A pilha Bluetooth padrão é fornecida no AOSP e está localizada em system/bt . A pilha implementa o HAL Bluetooth 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 do Bluetooth, passe os arquivos da interface do Bluetooth para a ferramenta de geração de HIDL. Os arquivos de interface estão localizados em hardware/interfaces/bluetooth .

Desenvolvimento de pilha Bluetooth

A pilha Android Bluetooth é uma pilha Bluetooth totalmente qualificada. A lista de qualificação está no site Bluetooth SIG sob QDID 169365 .

A pilha principal do Bluetooth reside em system/bt . O desenvolvimento acontece no AOSP e as contribuições são bem-vindas.

Arquitetura do 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 Bluetooth Android
Figura 2. Android 7.xe arquitetura Bluetooth anterior
Framework de aplicação
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 perfis Bluetooth na camada de estrutura Android. Este aplicativo chama a camada HAL via JNI.
JNI
O código JNI associado ao android.bluetooth está localizado em packages/apps/Bluetooth/jni . O código JNI chama a camada HAL e recebe callbacks do HAL quando certas operações Bluetooth ocorrem, como quando dispositivos são descobertos.
HAL
A camada de abstração de hardware define a interface padrão para a qual as APIsandroid.bluetooth e o processo Bluetooth chamam e que você deve implementar para que o hardware Bluetooth funcione corretamente. O arquivo de cabeçalho do HAL Bluetooth é 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 HAL Bluetooth 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.

Implementando o HAL

O HAL Bluetooth 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 .