2015-01-20 16 views
7

Ich entwickle eine Anwendung, in der ich Beacons benutze. Ich habe das zugehörige Estimote SDK für dasselbe durchgesehen. Jetzt ist die Sache, dass ich die eindeutige Identifikation eines bestimmten Leuchtfeuers wissen muss. Angenommen, ich habe 3 Beacons und alle sind im Bereich eines Geräts vorhanden. Jetzt möchte ich verschiedene Funktionen basierend auf der Unique Id der Beacons durchführen. Dazu muss ich die eindeutige ID jedes Beacons kennen. Momentan gebe ich UUID für ein Beacon und überprüfe nur, ob es in der Region des Gerätes liegt oder nicht. Mein Code ist wie folgt: -So erhalten Sie die eindeutige ID eines Beacons mit 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 ... 
      } 
     }); 

Jetzt brauche ich die eindeutige ID des Beacon programmatisch zu bekommen, so dass ich Entscheidung in Abhängigkeit von dem IDs zu nehmen. Bitte helfen Sie mir, das gleiche zu sortieren. Jede Hilfe wäre spürbar. Danke.

+0

Ich habe das gleiche Problem konfrontiert . Hast du eine Lösung gefunden? – Roadblock

Antwort

6

Jedes Beacon hat ID.
ID ist 20 Bytes lang und ist in drei Abschnitte unterteilt:

  • proximityUUID (16 Bytes)

  • major Nummer (2 Byte)

  • minor Nummer (2 Bytes).

Wie Sie sie verwenden, um bestimmte Beacon zu identifizieren?

Zuerst müssen Sie sich bewusst sein, dass es viele Beacons in Ihrer Nähe geben kann. Diese Beacons stammen möglicherweise von anderen Anbietern, Unternehmen oder Entwicklern, daher möchten Sie sie herausfiltern.
Um Beacons zu filtern, sollten Sie proximityUUID verwenden, um von Ihnen oder Ihrem Unternehmen bereitgestellte Beacons zu gruppieren. Geben Sie allen Ihren Beacons das gleiche proximityUUID.
Danach können Sie beginnen die Überwachung und im Bereich von:

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

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

nun in Ihren Zuhörern werden Sie benachrichtigt, wenn Ihr Leuchtfeuer in der Nähe sein.

Nehmen wir an, Sie schreiben eine App für Kinos in der Stadt. Jedes Kino hat zwei verschiedene Beacons zu führen verschiedene Aktionen. Wie unterscheidet man zwischen Beacons für Kinos und wie man das für ein bestimmtes Beacon in einem speziellen Kino macht?
Verwenden Sie die Felder major und minor. Zum Beispiel:

  • Verwendung major für alle Baken in einem bestimmten Kino Identifizierung
  • Verwendung minor für spezifische Bake in einem bestimmten Kino zu identifizieren.

Wenn Sie ID für Baken in einer solchen Art und Weise erstellen, können Sie bestimmte Leuchtfeuer erhalten und ausführen Aktion:

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){ 
      ... 
     } 
} 

Hope, das wird Ihnen helfen :)

+0

Hallo mklimek, danke für die Antwort. Ich bin nicht klar mit der Major & Minor Sache, auch was ist die "SCARY_CINEMA_ID" & "SCARY_CINEMA_BEACON_1" hier. Kannst du bitte ein bisschen mehr erklären. –

+1

@SalmanKhan 'major' und' minor' sind Standardfelder für esitmote Beacons. Wir können sie als IDs verwenden, um Beacons zu identifizieren. SCARY_CINEMA_ID ist für das Beispiel 1111 willkürlich "moll" gewählt. COMEDY_CINEMA_ID ist das zweite "moll" für das andere Kino, zum Beispiel 2222. Wenn Sie zwei Beacons haben und mit SCARY_CINEMA und 'proximityUUID' =" beaconsForCinemas "in Beziehung setzen wollen, haben Sie um Werte für den ersten Beacon wie folgt zu setzen: uuuid = "beaconsForCinemas", major = 1111, minor = 1, benutze für das zweite Beacon in diesem Kino dasselbe, aber setze minor = 2 – mklimek

+0

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

0

Kam ich über diesen Artikel, als ich es ausprobierte, könnte es eine Hilfe für Sie sein. https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-

+0

Hey Swarna, danke für die Antwort, aber ich suche es für Android. Irgendeine Möglichkeit, dies in Android zu lösen? –

+0

sollten Sie wahrscheinlich direkt zu schätzen, die meisten Funktionen sind noch nicht für Android verfügbar. – Mal

+0

ok danke für die Hilfe. –