Типичный способ решения этой проблемы - Мониторинг маякового маяка и маяк в диапазоне.
используется маяк, начиная читать отдельные идентификаторы, и держать карту какие маяки были замечены до того, как это:
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();
}
большой @davidgyoung, но я хочу в методе didExitRegion это удалить не все данные радиомаяков, но только то, что один маяк, который, если диапазон, другие beacon's все еще находятся в HashSet –
Когда вызываетсяExitRegion, это означает, что * все * маяки в регионе исчезли. – davidgyoung