Beacons no mundo real com Eddystone

54
Beacons no mundo real com o padrão Eddystone Marcelo Quinta @mrquinta

Transcript of Beacons no mundo real com Eddystone

Page 1: Beacons no mundo real com Eddystone

Beacons no mundo real com o padrão EddystoneMarcelo Quinta

@mrquinta

Page 2: Beacons no mundo real com Eddystone

O que é um beacon BLE?

Page 3: Beacons no mundo real com Eddystone
Page 4: Beacons no mundo real com Eddystone
Page 5: Beacons no mundo real com Eddystone
Page 6: Beacons no mundo real com Eddystone
Page 7: Beacons no mundo real com Eddystone
Page 8: Beacons no mundo real com Eddystone
Page 9: Beacons no mundo real com Eddystone

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)

Page 10: Beacons no mundo real com Eddystone
Page 11: Beacons no mundo real com Eddystone

CONTEXTO

Page 12: Beacons no mundo real com Eddystone
Page 13: Beacons no mundo real com Eddystone
Page 14: Beacons no mundo real com Eddystone

Qual é a parada certa?

Page 15: Beacons no mundo real com Eddystone
Page 16: Beacons no mundo real com Eddystone

Beacon

Page 17: Beacons no mundo real com Eddystone

Beacon

Page 18: Beacons no mundo real com Eddystone

Beacon 12345

Beacon

Funciona até no iPhone!

Page 19: Beacons no mundo real com Eddystone

12345

Beacon 12345

Beacon

Page 20: Beacons no mundo real com Eddystone

12345

Beacon 12345

Beacon

Parada 0543

Page 21: Beacons no mundo real com Eddystone
Page 22: Beacons no mundo real com Eddystone

https://www.youtube.com/watch?v=TZf4WquRGJU

Page 23: Beacons no mundo real com Eddystone

https://github.com/google/eddystone

Eddystone

Page 24: Beacons no mundo real com 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)

Page 25: Beacons no mundo real com Eddystone

MAIS CONTEXTO

Page 26: Beacons no mundo real com Eddystone

https://www.youtube.com/watch?v=TZf4WquRGJU

Page 27: Beacons no mundo real com Eddystone

Nearby API

Proximity beacons API

APIs para comunicação direta com beacon

Bibliotecas abertas e de fabricantes

APIs para gestão de beacons

Outras

Page 28: Beacons no mundo real com Eddystone

Comunicando-se adhoc com

beacons Eddystone

Page 29: Beacons no mundo real com 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

Page 30: Beacons no mundo real com Eddystone

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'

Page 31: Beacons no mundo real com Eddystone

CÓDIGO

Page 32: Beacons no mundo real com Eddystone

Gerindo beacons e comunicando-se

com eles

Page 33: Beacons no mundo real com Eddystone

Antes de tudo

1. Criar o projeto no Google Developer Console 1. Ativar Proximity beacons API 2. Ativar Nearby beacons API

Page 34: Beacons no mundo real com Eddystone

Passo 1: Hardware compatível

https://developers.google.com/beacons/eddystone

Page 35: Beacons no mundo real com Eddystone

Passo 2: Registro com Proximity Beacons API

Page 36: Beacons no mundo real com Eddystone

Passo 2: Registro com Proximity Beacons API

https://proximitybeacon.googleapis.com/v1beta1/beacons:register

Page 37: Beacons no mundo real com Eddystone

Passo 2: Registro com Proximity Beacons API

Page 38: Beacons no mundo real com Eddystone

Beacon dashboard

Page 39: Beacons no mundo real com Eddystone

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

Page 40: Beacons no mundo real com Eddystone

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'

Page 41: Beacons no mundo real com Eddystone

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

Page 42: Beacons no mundo real com Eddystone

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

Page 43: Beacons no mundo real com Eddystone

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); } }}

Page 44: Beacons no mundo real com Eddystone

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);}

Page 45: Beacons no mundo real com Eddystone

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);}

Page 46: Beacons no mundo real com Eddystone

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); } });}

Page 47: Beacons no mundo real com Eddystone

CICLO DE VIDA

Page 48: Beacons no mundo real com Eddystone

BACKGROUND

Page 50: Beacons no mundo real com Eddystone

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

Page 51: Beacons no mundo real com Eddystone

*Priorize os do I/OVídeos recomendados

Page 52: Beacons no mundo real com Eddystone

Physical webEntenda de vez o conceito

https://github.com/google/physical-web

Page 53: Beacons no mundo real com Eddystone

Venha conversar com a gente!

Google Developer Experts

Page 54: Beacons no mundo real com Eddystone

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