2016-10-04 12 views
2

Когда в регионах обнаружены несколько маяковых радиосигналов,Могу ли я получить данные маяков в Exit Regions также, как я могу определить, когда новый радиосигнал попал в регион?

Как я могу найти тот, который является самым новым обнаруженным?

Также в маяке есть, как я могу узнать, что определенный маяк покинул регион.

ответ

2

Типичный способ решения этой проблемы - Мониторинг маякового маяка и маяк в диапазоне.

используется маяк, начиная читать отдельные идентификаторы, и держать карту какие маяки были замечены до того, как это:

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 
     } 
    } 
} 

Поскольку вы хотите логику, чтобы вызвать снова, если маяк позже вновь после того, как все маяки в регионе исчезают, вы должны очистить карту на область выхода:

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

большой @davidgyoung, но я хочу в методе didExitRegion это удалить не все данные радиомаяков, но только то, что один маяк, который, если диапазон, другие beacon's все еще находятся в HashSet –

+0

Когда вызываетсяExitRegion, это означает, что * все * маяки в регионе исчезли. – davidgyoung