Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

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 8.0

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 do Android 8.0
Figura 1. Arquitetura Bluetooth do Android 8.0
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 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 Android 8.0 Bluetooth é uma pilha Bluetooth totalmente qualificada. A lista de qualificação está no site Bluetooth SIG sob QDID 97584 .

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 de 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 retornos de chamada 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 APIs android.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 .