O Android oferece suporte integrado à plataforma para Bluetooth de baixa energia (BLE) na função central e 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ção com sensores de proximidade para oferecer aos usuários uma experiência personalizada com base na localização atual deles.
Em comparação com o 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 tenham requisitos de energia mais rígidos, como sensores de proximidade, monitores de frequência cardíaca e dispositivos de fitness.
Atenção:quando um usuário pareia dispositivos por meio do BLE, os dados comunicados entre os dois aparelhos ficam acessíveis para todos os apps no dispositivo do usuário.
Por esse motivo, se o app capturar dados sensíveis, implemente a segurança na camada do app para proteger a privacidade desses dados.
Noções básicas
Para que dispositivos com BLE transmitam dados entre si, eles precisam primeiro
formar um canal de comunicação. O uso das APIs Bluetooth LE exige que você
declare várias permissões
no arquivo de manifesto. Quando o app tiver permissão para usar o Bluetooth, ele
precisará acessar o BluetoothAdapter
e
determinar se o Bluetooth está disponível no dispositivo.
Se o Bluetooth estiver disponível, o dispositivo vai
procurar dispositivos BLE próximos.
Depois que um dispositivo é encontrado, os recursos dele são descobertos
fazendo a conexão com o servidor GATT no dispositivo BLE.
Depois que uma conexão é estabelecida,
os dados podem ser transferidos com o dispositivo conectado
com base nos serviços e nas características disponíveis.
Principais termos e conceitos
Confira a seguir um resumo dos principais termos e conceitos do BLE:
- Perfil de atributo genérico (GATT)
- O perfil GATT é uma especificação geral para envio e recebimento de pequenas quantidades de dados conhecidos como "atributos" por um link BLE. Todos os perfis de aplicativo BLE atuais são baseados em GATT. Confira o exemplo do Android BluetoothLeGatt no GitHub para saber mais.
- Perfis
- O Bluetooth SIG define muitos perfis para dispositivos BLE. O 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 de nível de bateria.
- Protocolo de atributo (ATT)
- O GATT foi criado com base no Protocolo de atributo (ATT). Ele também é chamado de GATT/ATT. O ATT é otimizado para operar em dispositivos BLE. Para isso, ele usa o mínimo possível de bytes. Cada atributo é identificado exclusivamente por um Identificador universalmente único (UUID), um formato padronizado de 128 bits para um ID de string usado para identificar unicamente informações. Os atributos transportados pelo ATT são formatados como características e serviços.
- Característica
- Uma característica contém um valor único e descritores 0-n para descrever o valor dela. Ela pode ser considerada como um tipo, semelhante a uma classe.
- Descritor Os descritores
- são atributos definidos que descrevem um valor de 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 a esse valor.
- 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 da frequência cardíaca". É possível encontrar uma lista de perfis e serviços com base em GATT em bluetooth.org.
Papéis e responsabilidades
Quando um dispositivo interage com um dispositivo BLE, os papéis e as responsabilidades são divididos de duas maneiras diferentes:
Central x periférico. Isso se aplica à própria conexão BLE: o dispositivo na função central faz a verificação do anúncio e o dispositivo na função periférica anuncia. Dois dispositivos que oferecem suporte apenas para o papel periférico não podem se comunicar entre si. Assim como dois dispositivos que só oferecem suporte ao papel central, não podem.
Servidor GATT x cliente GATT. Isso determina como os dois dispositivos se comunicam depois de estabelecer a conexão. O dispositivo na função de cliente envia solicitações de dados, e o dispositivo na função de servidor as atende.
Para entender a diferença entre as divisões de função central-periférica e servidor-cliente, considere um exemplo em que você tem um smartphone Android e um rastreador de atividades habilitado para BLE que informa os dados do sensor de volta ao smartphone.
O smartphone, o dispositivo central, procura ativamente dispositivos BLE. O rastreador de atividades, o dispositivo periférico, divulga e aguarda uma solicitação de conexão.
Depois que o smartphone e o rastreador de atividades estabelecerem uma conexão, eles vão começar a transferir metadados GATT um para o outro. Nesse caso, o app em execução no smartphone envia solicitações de dados, atuando como o cliente GATT. O rastreador de atividades atende a essas solicitações e atua como o servidor GATT.
Um design alternativo do app pode envolver o smartphone que desempenha o papel de
servidor GATT. Consulte
BluetoothGattServer
para
mais informações.