O Android oferece suporte a plataforma integrada para Bluetooth de baixa energia (BLE) no papel central e oferece APIs que os apps podem usar para descobrir dispositivos, consultar serviços e transmitir informações.
Alguns casos de uso comuns são:
- Transferência de pequenas quantidades de dados entre dispositivos próximos.
- Interações com sensores de proximidade para oferecer aos usuários uma experiência personalizada com base na localização atual deles.
Ao contrário do Bluetooth clássico, o BLE foi projetado para um consumo de energia significativamente menor. Isso permite que os apps se comuniquem com dispositivos BLE que têm requisitos de energia mais rigorosos, como sensores de proximidade, monitores de frequência cardíaca e dispositivos de condicionamento físico.
Cuidado:quando um usuário faz o pareamento de um dispositivo com outro usando BLE, os dados comunicados entre os dois dispositivos ficam acessíveis para todos os apps no dispositivo do usuário.
Por esse motivo, se seu app captura dados confidenciais, implemente a segurança na camada do app para proteger a privacidade desses dados.
Noções básicas
Para que dispositivos habilitados para BLE transmitam dados entre si, primeiro eles precisam formar um canal de comunicação. O uso das APIs Bluetooth LE exige que você
declare várias permissões
no arquivo de manifesto. Depois que o app tiver permissão para usar o Bluetooth, ele
vai precisar acessar o BluetoothAdapter
e
determinar se o Bluetooth está disponível no dispositivo.
Se o Bluetooth estiver disponível, o dispositivo vai
buscar dispositivos BLE por perto.
Depois que um dispositivo é encontrado, os recursos do dispositivo BLE são descobertos pela
conexão com o servidor GATT no dispositivo BLE.
Após a conexão, os
dados podem ser transferidos com o dispositivo conectado
com base nos serviços e nas características disponíveis.
Principais termos e conceitos
Veja a seguir um resumo dos principais termos e conceitos do BLE:
- Perfil de atributo genérico (GATT, na sigla em inglês)
- O perfil GATT é uma especificação geral para enviar e receber dados curtos, conhecidos como "atributos", por meio de um link BLE. Todos os perfis de aplicativo BLE atuais são baseados no GATT. Consulte o exemplo do Android BluetoothLeGatt (link em inglês) no GitHub para saber mais (link em inglês).
- Perfis
- O Bluetooth SIG define muitos perfis para dispositivos BLE. Um perfil é uma especificação de como um dispositivo funciona em um aplicativo específico. Um dispositivo pode implementar mais de um perfil. Por exemplo, um dispositivo pode conter um monitor de frequência cardíaca e um detector do nível de bateria.
- Protocolo de atributos (ATT)
- O GATT foi criado com base no protocolo de atributos (ATT, na sigla em inglês). Isso também é chamado de GATT/ATT. O ATT é otimizado para operar em dispositivos BLE. Para isso, ela usa o mínimo de bytes possível. Cada atributo é identificado de maneira exclusiva por um identificador universal exclusivo (UUID, na sigla em inglês), um formato padronizado de 128 bits para um ID de string usado para identificar informações de maneira exclusiva. Os atributos transportados pelo ATT são formatados como características e serviços.
- Característica
- Uma característica contém um único valor e descritores 0-n que descrevem o valor dela. Uma característica pode ser considerada um tipo, análogo a uma classe.
- Descritor
- Os descritores são atributos definidos que descrevem o valor de uma característica. Por exemplo, um descritor pode especificar uma descrição legível, um intervalo aceitável para o valor de uma característica ou uma unidade de medida específica do valor de uma característica.
- Serviço
- Um serviço é um conjunto de características. Por exemplo, você pode ter um serviço chamado "Monitor de frequência cardíaca" que inclui características como "medição de frequência cardíaca". Você encontra uma lista de perfis e serviços baseados em GATT em Bluetooth.org (em inglês).
Papéis e responsabilidades
Os papéis e as responsabilidades a seguir se aplicam quando um dispositivo interage com um dispositivo BLE:
Central versus periférico. Aplica-se à conexão BLE em si. O dispositivo no papel central verifica, procurando pela publicidade, e o dispositivo no papel de periférico faz o anúncio.
Servidor GATT x cliente GATT. Isso determina como dois dispositivos se comunicam depois de estabelecer a conexão. Para entender a diferença, imagine que você tem um smartphone Android e um rastreador de atividades que é um dispositivo BLE. O smartphone é compatível com o papel central, e o rastreador de atividades aceita o papel periférico. Para estabelecer uma conexão BLE, você precisa de uma de cada. Duas coisas que só oferecem suporte a periféricos não podem se comunicar entre si, nem duas coisas que só oferecem suporte central.
Depois que o smartphone e o rastreador de atividades estabelecerem uma conexão, eles começarão a transferir metadados GATT um para o outro. Dependendo do tipo de dados transferidos, um ou outro pode atuar como servidor. Por exemplo, se o rastreador de atividades quiser enviar dados do sensor para o smartphone, é recomendável que ele atue como servidor. Se o rastreador de atividades quiser receber atualizações pelo smartphone, talvez faça sentido que o dispositivo atue como o servidor.
No exemplo usado neste tópico, o app (em execução em um dispositivo Android) é o cliente GATT. O app recebe dados do servidor GATT, que é um monitor
de frequência cardíaca BLE compatível com o perfil de frequência cardíaca.
Como alternativa, você pode projetar o aplicativo para desempenhar a função de servidor GATT. Consulte
BluetoothGattServer
para
mais informações.