2016-04-21 17 views
0

Ich versuche, die Liste der in der Nähe Beacons mit der Android Beacon Library zu bekommen. Ich folgte diesem , aber als Neuling fand ich es zu kompliziert. Ich möchte keine Beacons im Backgroun erkennen, ich möchte keinen Regionseintrag erkennen ... Ich möchte nur die Liste der tatsächlich sichtbaren Beacons haben. In der onCreate-Methode meiner MainActivity-Klasse habe ich gerade diesen Code hinzugefügt und gehofft, dass dies die Ranging oder Überwachung startet, aber das ist nicht geschehen. Hatte jemand und Idee was ist das Problem oder wie benutzt man diese beiden Klassen?Detect Liste von Beacon mit Altbeacon

Antwort

1

Wenn Sie nur eine Liste der sichtbaren Beacons erhalten möchten, wollen Sie Beacon "rangieren". Sie müssen nicht die zwei separaten Aktivitätsklassen verwenden, die in den Beispielen erwähnt werden. Sie können die relevanten Teile des Ranging-Beispiels einfach in Ihre eigene Aktivität kopieren.

dies also tun:

  1. Entfernen Sie die Verweise auf MonitoringActivity und RangingActivity aus Ihrer Klasse.

  2. Fügen Sie folgende zu Ihrer Klasse:

Ändern Sie Ihre Klassendefinition zu sein:

public class MainActivity extends AppCompatActivity implements BeaconConsumer { 

Fügen Sie den folgenden Code in Ihre onCreate Methode:

BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this); 
    // To detect proprietary beacons, you must add a line like below corresponding to your beacon 
    // type. Do a web search for "setBeaconLayout" to get the proper expression. 
    // beaconManager.getBeaconParsers().add(new BeaconParser(). 
    //  setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25")); 
    beaconManager.bind(this); 

hinzufügen die folgenden Methoden zu Ihrer Klasse:

@Override 
public void onBeaconServiceConnect() { 
    BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this); 
    beaconManager.setRangeNotifier(new RangeNotifier() { 
     @Override 
     public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
      for (Beacon beacon : beacons) { 
       Log.i("MainActivity", "I see a beacon that is about "+beacon.getDistance()+" meters away.");   
      } 
     } 
    }); 

    try { 
     beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null)); 
    } catch (RemoteException e) { } 
} 

Die Liste der sichtbaren Beacons ist, was innerhalb der for (Beacon beacon : beacons) Zeile zugegriffen wird.

+0

Code ist veraltet – Fralec