2016-10-04 1 views

Antwort

2

Der typische Weg, um dies zu lösen, ist kombinieren Beacon Monitoring und Beacon im Bereich.

Sie verwenden Leuchtfeuer die einzelnen Kennungen zu lesen angefangen und haben immer eine Karte von dem, was Baken wurden, bevor so gesehen:

private HashSet<Beacon> beaconsSeen = new HashSet<Beacon>(); 
@Override 
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {] 
    for (Beacon beacon : beacons) { 
     if (!beaconsSeen.contains(beacon)) { 
      beaconsSeen.add(beacon); 
      // Perform your logic here 
     } 
    } 
} 

Da Sie die Logik wollen wieder auszulösen, wenn die Bake später nach wiederentdeckt alle Baken in der Region verschwinden, Sie die Karte auf Region Ausfahrt löschen müssen:

@Override 
public void didExitRegion(Region region) { 
    beaconsSeen.clear(); 
} 
+0

große @davidgyoung, aber ich möchte in didExitRegion Methode nicht alle Beacon-Daten entfernen, sondern nur, dass ein Leuchtfeuer, das aus ist, wenn Bereich, andere Beacons sind immer noch in HashSet –

+0

Wenn didExitRegion aufgerufen wird, sind * alle * Beacons in der Region verschwunden. – davidgyoung

Verwandte Themen