Beacons no mundo real com Eddystone
-
Upload
marcelo-quinta -
Category
Technology
-
view
275 -
download
1
Transcript of Beacons no mundo real com Eddystone
Beacons no mundo real com o padrão EddystoneMarcelo Quinta
@mrquinta
O que é um beacon BLE?
O que é um beacon BLE?
• Dispositivo por localização por bluetooth • 2.4 Ghz, mas em canal diferente • Certa capacidade de guardar informações • ˜30bytes
• Bateria que pode durar anos • Broadcast de uma a dez vezes por segundo
(configurável)
CONTEXTO
Qual é a parada certa?
Beacon
Beacon
Beacon 12345
Beacon
Funciona até no iPhone!
12345
Beacon 12345
Beacon
12345
Beacon 12345
Beacon
Parada 0543
https://www.youtube.com/watch?v=TZf4WquRGJU
https://github.com/google/eddystone
Eddystone
Eddystone
• Padrão open-source • UID (identificador comum) • URL • Ephemeral IDs • Dados de telemetria • Possibilidade de adicionar “anexos"
• Broadcast menos frequente que o iBeacon • Já funciona para todas as plataformas móveis + Chrome
(Physical web)
MAIS CONTEXTO
https://www.youtube.com/watch?v=TZf4WquRGJU
Nearby API
Proximity beacons API
APIs para comunicação direta com beacon
Bibliotecas abertas e de fabricantes
APIs para gestão de beacons
Outras
Comunicando-se adhoc com
beacons Eddystone
Processo
1. Configurar o beacon 2. Pegar permissão do usuário 3. Iniciar o serviço de leitura de beacons, fazendo os filtros 4. Ler beacons 5. Utilizar RSSI para sinal
Biblioteca!
• Que tipos são suportados? • Como trata o background? • Tem o código aberto? • Orientado a eventos
compile 'org.altbeacon:android-beacon-library:2.3.5'
CÓDIGO
Gerindo beacons e comunicando-se
com eles
Antes de tudo
1. Criar o projeto no Google Developer Console 1. Ativar Proximity beacons API 2. Ativar Nearby beacons API
Passo 1: Hardware compatível
https://developers.google.com/beacons/eddystone
Passo 2: Registro com Proximity Beacons API
Passo 2: Registro com Proximity Beacons API
https://proximitybeacon.googleapis.com/v1beta1/beacons:register
Passo 2: Registro com Proximity Beacons API
Beacon dashboard
Passo 3: Comunicar com beacon pela aplicação
Nearby API
Google Play Services 7.8+ Bluetooth Sons inaudíveis
Cota: 8.640.000/dia 10K/100 seg
1K/100 seg por usuário
Antes de tudo
1. Gerar chave de debug para o computador (igual Google Maps) 1. Para produção, usar o keystore 2. Colocar a chave no manifest
2. Entender os termos 1. Privacidade dos usuários 2. Segurança dos dados 3. Avisar explicitamente quando estiver rastreando beacons 4. Tomar cuidado com o uso da bateria 5. Utilizar o branding corretamente
3. Adicionar o pacote do Google Play Services Nearby 'com.google.android.gms:play-services-nearby:9.0.0'
Processo
1. Receber permissão 2. Iniciar o serviço Nearby Messages service 3. Assinar o listener de mensagens 4. Ler e identificar o beacon 5. Pedir os anexos, caso existam
BackgroundForeground
• Roda continuamente até o pedido de parada.
• Gasto alto de bateria
• Leituras com modo de menos gasto de energia, mesmo com o app ativo
• Maior latência • Menor confiança • Tela ligada ou ligando ==
mais confiança
Foreground:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... mMessageListener = new MessageListener() { @Override public void onFound(Message message) { String messageAsString = new String(message.getContent()); Log.d(TAG, "Found message: " + messageAsString); }
@Override public void onLost(Message message) { String messageAsString = new String(message.getContent()); Log.d(TAG, "Lost sight of message: " + messageAsString); } }}
Foreground:
// Subscribe to receive messages.private void subscribe() { Log.i(TAG, "Subscribing."); SubscribeOptions options = new SubscribeOptions.Builder() .setStrategy(Strategy.BLE_ONLY) .build(); Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, options);}
Background:
// Subscribe to messages in the background.private void backgroundSubscribe() { Log.i(TAG, "Subscribing for background updates."); SubscribeOptions options = new SubscribeOptions.Builder() .setStrategy(Strategy.BLE_ONLY) .build(); Nearby.Messages.subscribe(mGoogleApiClient, getPendingIntent(), options);}
private PendingIntent getPendingIntent() { return PendingIntent.getBroadcast(this, 0, new Intent(this, BeaconMessageReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);}
Background:
@Overridepublic void onReceive(Context context, Intent intent) { Nearby.Messages.handleIntent(intent, new MessageListener() { @Override public void onFound(Message message) { Log.i(TAG, "Found message via PendingIntent: " + message); }
@Override public void onLost(Message message) { Log.i(TAG, "Lost message via PendingIntent: " + message); } });}
CICLO DE VIDA
BACKGROUND
Leia este artigo: http://www.geomarketing.com/geominds-is-googles-eddystone-the-donald-trump-of-the-beacosystem
Mais informações
Nearby Connections e Nearby Messages
developer.android.com/nearby
Beacons em geral
developer.google.com/beacons
Proximity Beacon API
developer.google.com/beacons/proximity
Eddystone
github.com/google/eddystone
*Priorize os do I/OVídeos recomendados
Physical webEntenda de vez o conceito
https://github.com/google/physical-web
Venha conversar com a gente!
Google Developer Experts
Marcelo Quinta@mrquinta
Obrigado
Essa palestra foi baseada em material disponibilizado pelo Google. Dê uma olhada no canal do Youtube deles: https://www.youtube.com/user/GoogleDevelopers