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

#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, это означает, что все маяки в регионе исчезли.