Beacons no mundo real com Eddystone

Post on 10-Feb-2017

275 views 1 download

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

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