#android #altbeacon
#Android #altbeacon
Вопрос:
Когда в регионах обнаружено несколько маяков,
как я могу определить, какой из них является самым новым обнаруженным?
Также в beacon существует, как я могу узнать, что конкретный маяк покинул регион.
Ответ №1:
Типичный способ решить эту проблему — объединить мониторинг маяка и ранжирование маяка.
Вы используете ранжирование маяков для считывания отдельных идентификаторов и сохраняете карту того, какие маяки были замечены раньше, например:
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();
}
Комментарии:
1. отлично @davidgyoung, но я хочу, чтобы в методе didExitRegion он удалял не все данные маяка, а только тот один маяк, который находится вне диапазона, другие маяки все еще находятся в HashSet
2. Когда вызывается didExitRegion, это означает, что все маяки в регионе исчезли.