2015-01-20 6 views
7

Sto sviluppando un'applicazione in cui utilizzo Beacons. Ho passato il relativo SDK Estimote per lo stesso. Ora il fatto è che ho bisogno di conoscere l'Unico Id di un particolare Faro. Supponiamo che io abbia 3 Beacon e tutti siano presenti nel raggio di un dispositivo. Ora voglio eseguire diverse funzioni basate sull'ID univoco dei beacon. Per questo ho bisogno di conoscere l'unico ID di ogni singolo faro. Attualmente sto dando UUID per un Beacon e sto solo controllando se si trova nella zona del dispositivo o meno. Il mio codice è il seguente: -Come ottenere l'ID univoco di un beacon utilizzando Estimote SDK in Android

private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ"; 
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null); 

beaconManager.setMonitoringListener(new MonitoringListener() { 

      @Override 
      public void onExitedRegion(Region region) { 
      //Region Exited 
      } 

      @Override 
      public void onEnteredRegion(Region arg0, List<Beacon> arg1) { 
       // TODO Auto-generated method stub 
       //Do something ... 
      } 
     }); 

Ora ho bisogno di ottenere l'ID univoco del Beacon di programmazione in modo che possa prendere decisioni a seconda delle ID. Per favore aiutami a risolvere lo stesso. Qualsiasi aiuto sarebbe apprezzabile. Grazie.

+0

mi hanno dovuto affrontare lo stesso problema . Hai trovato una soluzione? – Roadblock

risposta

6

Ogni faro ha ID.
ID è lungo 20 byte ed è diviso in tre sezioni:

  • proximityUUID (16 bytes)

  • major numero (2 byte)

  • minor numero (2 byte).

Come usarli per identificare un particolare faro?

Per prima cosa, devi essere consapevole che ci possono essere molti fari attorno a te. Questi beacon potrebbero provenire da altri fornitori, aziende o sviluppatori, quindi si desidera filtrarli.
Per filtrare i beacon, è necessario utilizzare proximityUUID per raggruppare i beacon forniti da voi o dalla vostra azienda. Dai lo stesso proximityUUID a tutti i tuoi beacon.
Dopo di che è possibile avviare il monitoraggio e che vanno da:

private final Region MY_BEACONS = new Region("MY_BEACONS","YOUR_PROXIMITY_UUID", null, null); 

beaconManager.startMonitoring(MY_BEACONS); 
beaconManager.startRanging(MY_BEACONS); 

Ora, nei vostri ascoltatori si saranno informati quando i fari saranno nel quartiere.

Ora supponiamo che stiate scrivendo un'app per i cinema in città. Ogni cinema ha due fari diversi per eseguire diverse azioni. Come distinguere tra i beacon per i cinema e come farlo per un particolare faro in un cinema specioso?
Utilizzare i campi major e minor. Ad esempio:

  • uso major per identificare tutti beacon in un cinema particolare,
  • uso minor per identificare beacon specifico in un cinema particolare.

Quando si crea ID per fari in tal modo, è possibile ottenere faro specifico ed eseguire l'azione:

private final int SCARY_CINEMA_ID = 1111; 
private final int SCARY_CINEMA_BEACON_1 = 1; 
private final int SCARY_CINEMA_BEACON_2 = 2; 
private final int COMEDY_CINEMA_ID = 2222; 
private final int COMEDY_CINEMA_BEACON_1 = 1; 
private final int COMEDY_CINEMA_BEACON_2 = 2; 


@Override 
public void onEnteredRegion(Region region, List<Beacon> beacons) { 
    for(Beacon beacon : beacons){ 
     if(beacon.getMajor() == SCARY_CINEMA_ID){ 
      if(beacon.getMinor == SCARY_CINEMA_BEACON_1){ 
       //do something for this beacon 
      } else{ 
       //do something for second beacon in cinema 
      } 
     } else if(beacon.getMajor == COMEDY_CINEMA_ID){ 
      ... 
     } 
} 

Speranza, che vi aiuterà a :)

+0

Ciao mklimek, grazie per la risposta. Non sono chiaro con la cosa principale e secondaria, anche ciò che è "SCARY_CINEMA_ID" e "SCARY_CINEMA_BEACON_1" qui. Puoi spiegarci un po 'di più. –

+1

@SalmanKhan 'major' e' minor' sono campi standard per i fari esitmote. Possiamo usarli come identificativi per identificare i beacon. SCARY_CINEMA_ID è arbitrariamente scelto come 'minore' per il cinema per esempio 1111. COMEDY_CINEMA_ID è il secondo' minore' per altri cinema per esempio 2222. Se hai due beacon e vuoi metterlo in relazione con SCARY_CINEMA e 'proximityUUID' =" beaconsForCinemas ", hai per impostare i valori per il primo radiofaro come: uuuid = "beaconsForCinemas", maggiore = 1111, minore = 1, per il secondo beacon in questo cinema utilizzare lo stesso ma impostare minor = 2 – mklimek

+0

@SalmanKhan http://estimote.com/api/getting -started/intro-to-beacons.html – mklimek

0

È venuto in questo articolo mentre stavo provando, potrebbe essere di aiuto. https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-

+0

Hey Swarna, grazie per la risposta, ma la sto cercando per Android. Qualche modo per risolvere questo in Android? –

+0

probabilmente dovresti chiedere direttamente di stimare, la maggior parte delle funzionalità non sono ancora disponibili per Android. – Mal

+0

ok grazie per l'aiuto. –

Problemi correlati