iBeacon SDK no Android

Conteúdo
SDK do Ibeacon

Possíveis casos de uso e modelos de negócios para o beacon que permite a interação do usuário dependente da localização, mesmo dentro de edifícios, estão sendo acaloradamente debatidos atualmente. Publicidade e descontos em lojas, pagamentos móveis, navegação, transporte público, localização em prédios públicos e museus e automação residencial são apenas a ponta do iceberg. E, claro, a onipresente coleta de dados – agora nova e com informações de localização precisas. Antes de aprender mais sobre a tecnologia iBeacon, também mencionaremos o iBeacon SDK neste artigo.

Qual é o hype?

O protocolo iBeacon desenvolvido pela Apple com base no Bluetooth Low Energy é compatível com diversos dispositivos. O artigo explica iBeacons e Bluetooth Low Energy e usa o exemplo de desenvolvimento de um aplicativo Android para listas de compras dependentes de localização para mostrar a interação dependente de localização de um aplicativo com iBeacons. A implementação é baseada no MOKOSmart iBeacon SDK.

iBeacon, Bluetooth 4.0, BLE, SMART. O quê?

A tecnologia básica do iBeacon é o Bluetooth. O Bluetooth Low Energy (BLE), frequentemente chamado de selo de marketing Bluetooth Smart, foi incluído na versão 4.0 do padrão Bluetooth. O BLE não é compatível com versões anteriores, chamadas Bluetooth Classic. O Bluetooth 4.0 especifica que dispositivos compatíveis com o padrão devem implementar uma ou ambas as variantes, ou seja, Low Energy ou Classic.

O BLE está implementado em quase todos os smartphones atuais, como o iPhone 4+ e o Samsung Galaxy 3+. Um iPhone pode funcionar tanto como um receptor de sinais iBeacon quanto – ao contrário do Android – como um farol em si. O Android inclui drivers BLE da versão 18 da API, ou seja, Android 4.3. Aliás, os computadores atuais também são compatíveis com BLE. No Windows, porém, os drivers estão disponíveis apenas a partir do Windows 8 e, desde meados de 2011, o BLE está disponível em computadores Apple.

O BLE continua a oferecer suporte a uma variedade de dispositivos periféricos, como monitores de frequência cardíaca e helicópteros de brinquedo, termômetros, equipamentos de ginástica e escovas de dente, sim, escovas de dente e tênis.

Interessante em conexão com iBeacons é o Sensor

Tag da Texas Instruments, que além de sua função como iBeacon também pode medir temperatura, umidade, pressão e aceleração. O Sensor Tag também vem com um giroscópio, um magnetômetro e dois botões físicos. O dispositivo ideal para controlar remotamente apresentações enquanto transmite e exibe a umidade e a temperatura das mãos do palestrante. Acho que meu próximo projeto de caixa de areia será um tapete de terror de palco. Você pode encontrar uma lista detalhada dos dispositivos no site oficial do Bluetooth.

Pronto para o GATT

O modelo de comunicação utilizado pelos dispositivos para troca de dados é denominado GATT – Generic Attribute Profile (Perfil de Atributos Genéricos). O GATT define as funções do cliente e do servidor. O cliente solicita dados do servidor por meio de serviços. Um serviço agrupa vários pares atômicos de chave/valor, denominados características. Tanto os serviços quanto as características são identificados por meio de UUIDs e também podem conter descrições adicionais. Os serviços e suas características são catalogados na forma de perfis; a especificação define uma ampla gama deles, desde as áreas de saúde, esporte e fitness até – no nosso caso interessante – sensoriamento de proximidade. Os perfis individuais, seus serviços e características podem ser encontrados no portal do desenvolvedor Bluetooth, em Especificações do GATT.

gatt ibeacon sdk

Chegue ao farol 

Então, o que são iBeacons? iBeacon é uma tecnologia muito simples (e uma marca registrada da Apple) que permite interação com aplicativos dependente de localização. Um beacon envia um sinal que pode ser recebido por dispositivos compatíveis com BLE e processado por aplicativos instalados nele. O sinal contém a identificação do beacon e a intensidade da recepção. Os próprios iBeacons são, portanto – ao contrário de declarações imprecisas na imprensa – incapazes de entregar conteúdo ou rastrear o comportamento do cliente. Isso é responsabilidade dos aplicativos receptores e, portanto, dos desenvolvedores.

iBeacon na vida real

A implementação de iBeacons em larga escala na Alemanha provavelmente levará muito tempo, mas há alguns exemplos nos EUA e na Holanda. Por exemplo, a Major League Baseball equipou 28 estádios com iBeacons e os utiliza, entre outras coisas, para check-ins no aplicativo da MLB "At the Ballpark".

Uma vitrine foi instalada na Casa Rubens, em Antuérpia, que oferece aos visitantes informações básicas, como radiografias de pinturas e jogos de geocaching.

O principal exemplo em termos de tamanho vem da própria Apple. Mais de 250 Apple Stores foram equipadas com iBeacons. Em combinação com o app Apple Store, mensagens dependentes da localização são enviadas aos compradores que estão na loja. No entanto, as interações possíveis atualmente parecem bastante limitadas: as primeiras avaliações relatam apenas duas mensagens diferentes (e bastante genéricas) que teriam recebido. Ofertas especiais ou informações específicas sobre produtos individuais próximos não foram oferecidas.

Funcionalidade

O iBeacon SDK não utiliza um perfil BLE separado, mas sim pacotes de publicidade Bluetooth, ou seja, pacotes de transmissão, que são usados para descobrir dispositivos Bluetooth. Se você estiver interessado na estrutura exata do pacote, pode ler isso, por exemplo, no blog de Adam Warski.

Esse pacote é enviado em intervalos regulares que podem ser configurados via GATT. Ele contém o UUID do beacon, que normalmente é pré-configurado pelo fabricante. Assim, todos os beacons MOKOSmart enviam o mesmo UUID. IDs principais e secundários também são usados para identificar os beacons individuais. Os IDs principais podem representar, por exemplo, uma filial de uma loja ou um restaurante de uma rede de franquias, enquanto os IDs secundários podem representar uma única prateleira ou uma mesa.

Além disso, a intensidade do sinal está incluída no pacote de publicidade, que pode ser usado para medir a distância do receptor ao beacon. No entanto, não se pode esperar alta precisão aqui, pois o sinal pode ser obstruído por obstáculos espaciais, como móveis ou pessoas.

O SDK do IBeacon oferece dois conceitos para a interação de um aplicativo com essas informações: alcance e monitoramento de região. Durante o alcance, a distância até o beacon é determinada. Devido à imprecisão mencionada acima, isso ocorre em apenas três etapas. "Imediato" é uma distância de alguns centímetros, "Próximo" é alguns metros e "Distante" é uma distância superior a dez metros. O alcance só é possível se o aplicativo receptor estiver ativo.

Isso não é necessário para o monitoramento de região. Neste modo, um aplicativo inativo também pode ser notificado ao entrar ou sair de uma região definida por um ou mais beacons. O que torna essa tecnologia atraente para publicidade e varejo está se tornando claro agora. Além disso, para a maioria dos beacons, a intensidade da transmissão e o intervalo podem ser configurados para otimizar a vida útil da bateria com base nas condições locais.

"A maioria dos beacons" implica que há mais de um fabricante de iBeacons no mercado. Na verdade, existem vários: MOKOSmart, Kontakt.io, Gelo, Estimote e Gimbal. Além do hardware, esses fabricantes também oferecem o serviço iBeacon SDK e soluções em nuvem para o gerenciamento de beacons. Os amadores entre nós podem configurar transmissores iBeacon por conta própria, com relativamente pouco esforço, usando Raspberry Pi ou Arduino.

Lista piscando

Vamos supor a seguinte situação para o exemplo de implementação: o desenvolvedor está no supermercado na manhã de sábado. Crianças famintas estão esperando em casa e à tarde há uma venda de bolos na escola. Só então o fim de semana realmente começará. Portanto, bons motivos para se apressar. Infelizmente, a lista de compras é longa e não se adapta ao layout do supermercado. Se o supermercado estivesse equipado com iBeacons nos diferentes departamentos, um aplicativo de lista de compras poderia destacar as entradas apropriadas e reduzir significativamente o nível de estresse do desenvolvedor (completamente fictício, é claro).

Como nosso aplicativo precisa se comunicar via Bluetooth, primeiro precisamos das autorizações BLUETOOTH e BLUETOOTH_ADMIN no manifesto do Android. Para poder usar o serviço oferecido pela API Estimote para interagir com iBeacons, também precisamos torná-lo conhecido e colocar a API baixada em nosso diretório libs/.

Nosso protótipo consiste em uma lista simples e pré-preenchida e regiões predefinidas, ou seja, departamentos em nosso supermercado. Uma entrada da lista sabe a qual região está atribuída. Em nosso exemplo, atribuímos apenas um beacon a cada região. Também é possível combinar uma lista de beacons em uma região. A atividade principal é responsável por reconhecer a região atual e encaminhar essa informação para um adaptador, que é responsável por destacar as entradas da lista. Além disso, adicionamos a opção de selecionar a região ativa sem beacons para tornar nossa interface de usuário testável sem hardware adicional.

No método Create da atividade, instanciamos um Gerenciador de Beacons do MOKOSmart para nosso aplicativo. Usamos um ouvinte para o monitoramento da região, tornando a região atual conhecida pelo nosso adaptador e definindo o intervalo para as varreduras de beacon. No exemplo, definimos que um segundo deve ser varrido e, em seguida, 250 ms devem ser aguardados. Esses valores são escolhidos de forma relativamente agressiva para obter resultados rápidos nos testes. Na realidade, o difícil equilíbrio entre responsividade e duração da bateria é alcançado. Neste protótipo, também preenchemos nossa lista de compras com valores fictícios. Iniciamos ou paramos o monitoramento no método on() Start ou onStop() da atividade principal.

A lista de itens

O adaptador é implementado como um derivado do adaptador android.widget.Array e substitui o método getView(), que é chamado para cada linha a ser exibida. O título do item é escrito na primeira linha da avaliação definida no layout, e a região atribuída é escrita na segunda linha.

Como pode ser visto na Listagem 1, a região inserida é transferida para o adaptador no retorno de chamada "on Entered Region()" do MonitoringListener, que é atribuído ao nosso BeaconManager: item list Adapter.segregation (região). Ao chamar getView(), este verifica se a região da entrada na linha corresponde à região atual. Se for o caso, o plano de fundo da linha é colorido. Além disso, ou alternativamente, também é possível colocar as entradas da zona atual no início, ordenando a lista.

O código do aplicativo é claro; não requer muito esforço de implementação para receber sinais do iBeacon e tratá-los no aplicativo. Os conceitos de alcance e monitoramento do iBeacon são mapeados no MOKOSmart iBeacon SDK para que possam ser usados intuitivamente. O código-fonte completo do aplicativo pode ser encontrado no GitHub.

Conclusão e perspectiva

Vimos que a interação com iBeacons usando o MOKOSmart iBeacon SDK é fácil. Portanto, não espero grandes obstáculos na tecnologia de implementação, mas sim na implantação dos beacons e no ajuste da potência de transmissão. Esses parâmetros têm um impacto direto na capacidade de resposta da aplicação quando a localização muda. De qualquer forma, o balanceamento deve ser difícil.

Para aplicações particularmente interessantes, por exemplo, na área de automação residencial, considero a combinação de iBeacons com sensores, como no Sensor Tag da Texas Instruments mencionado acima. A Estimote também lançará no mercado beacons móveis com sensores de movimento e temperatura com os adesivos Estimote. As primeiras prévias para desenvolvedores deveriam ter sido entregues no final de outubro de 2014, mas nenhum kit foi enviado até o final de 2014.

Resta saber se a área de aplicação "Navegação Interna" pode ser mapeada de forma robusta com esta tecnologia. Devido à suscetibilidade do sinal Bluetooth a fatores de interferência, seria necessária uma iluminação intensa com sinais iBeacon da área correspondente e cálculos de posição usando triangulação com plantas de ambientes. Soluções adequadas são oferecidas pela MOKOSmart (SDK iBeacon para Navegação Interna) e por vários outros fabricantes, como a LabWerk, mas o autor não tem conhecimento de nenhum relatório prático.

Ao desenvolver um aplicativo que interage com iBeacons, aspectos de segurança e proteção de dados também devem ser considerados. Devido à simplicidade do sinal, o iBeacon é propenso a spoofing, o que não deve ser esquecido durante o desenvolvimento. Dados como a localização atual e o perfil de movimento, que podem ser coletados com base no comportamento do usuário, também exigem alta proteção.

 

Escrito por --
Foto de YK Huang
YK Huang
YK é um Gerente de Produto experiente no departamento de P&D da MOKOSMART, com mais de uma década de experiência em desenvolvimento de dispositivos inteligentes. Ele possui certificações PMP e NPDP, o que aprimora seu conhecimento sobre como lidar com equipes multifuncionais. Utilizou insights baseados em dados para lançar com sucesso mais de 40 produtos conectados. Com formação em Eletrônica e Engenharia, YK tem grande habilidade em transformar propostas de valor técnico complexas em soluções de IoT fáceis de usar, tanto para aplicações industriais quanto para o consumidor.
Foto de YK Huang
YK Huang
YK é um Gerente de Produto experiente no departamento de P&D da MOKOSMART, com mais de uma década de experiência em desenvolvimento de dispositivos inteligentes. Ele possui certificações PMP e NPDP, o que aprimora seu conhecimento sobre como lidar com equipes multifuncionais. Utilizou insights baseados em dados para lançar com sucesso mais de 40 produtos conectados. Com formação em Eletrônica e Engenharia, YK tem grande habilidade em transformar propostas de valor técnico complexas em soluções de IoT fáceis de usar, tanto para aplicações industriais quanto para o consumidor.
Compartilhe este post
Fortaleça sua necessidade de conexão com as soluções de dispositivos MOKOSmart IoT!