Executando verificação de segurança...
2
Dpbm
2 min de leitura ·

Pitch: BLE para android

Sempre que fico curioso com alguma tecnologia, acabo gastando muito tempo fazendo um projeto que nem deveria ter feito.
No caso este se enquadra perfeitamente no que acabei de dizer. Mas o que importa é que foi legal!


Recentemente tive a curiosidade de como fazer dois aparelhos android se comunicarem via bluetooth. Então abri o android studio e comecei a futricar.
A principio, achei q seria trivial, habilita o bluetooth e começa a escanear dispositivos, perea eles e envia dados depois de parear; No entanto, eu não estava certo nessa premissa, bom, talvez para o Bluetooth convencional.
Contudo, durante as minhas pesquisas encontrei o Bluetooth Low Energy, o que me parecel uma tecnologia melhor para o meu teste.

Durante o desenvolvimento, me deparei com vários desafios:

  1. Lidar com permissões
    Para quem já programou em dart+flutter ou react native, provavelmente não se preocupou muito com isso, mas em nativo precisamos verificar tudo. No meu caso, precisava verificar manualmente as permissões e se bluetooth e GPS estavam ativados, o que não foi dificil mas um tanto trabalhoso.

  2. Enviar dados via GATT+BLE
    Para a transmissão dos dados, criei um servidor GATT(Generic attribute Profile), do qual é responsável pelas comunicações usando BLE. Com ele, precisava anunciar que um dispositivo estava apto para comunicação e também utilizar das ferramentas internas para codificar e enviar os dados. No entanto, existem algumas divergencias entre métodos disponível para certas versões do SDK/Android. Nesse caso foi necessário utilizar o clássico tempo de debouncing para garantir que a mensagem foi enviada, e garantir que era seguro finalizar a conexão.


O projeto em si tinha uma premisa simples, conseguir conectar dois devices e enviar pequenos chunks de informação entre eles (uma mensagem). Depois de muito tempo debuggando, usando o Chatgpt+Gemini e documentação, finalmente consegui alcançar o que era esperado.

Para curiosos sobre o código, o link do github é: https://github.com/Dpbm/test-ble

Carregando publicação patrocinada...