Поймите, что используя API мониторинга, вы получите обратный вызов только тогда, когда поблизости находится любой маяк (один или несколько), который соответствует вашему определению Region
. Показанный код определяет регион, устанавливающий все идентификаторы в нуль. Это так называемый регион подстановочного знака, потому что он соответствует любому маяку.
Когда вы получаете обратный вызов на didEnterRegion
, он передает копию того же определения Region
, которое вы использовали для запуска мониторинга. И потому что вы устанавливаете все идентификаторы в нуль (определение подстановочного знака), это то, что вы получаете, когда вы проверяете идентификаторы объекта Region
, переданные этому методу. Эти API предназначены для оповещения о появлении любого из групп маяков.
Если вы хотите знать конкретные идентификаторы видимых маяков, вам просто нужно использовать API ранжирования. Вместо:
beaconManager.startMonitoringBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
Звоните:
beaconManager.startRangingBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
А затем установите ваш уведомитель обратного вызова следующим образом:
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Region region, Collection<Beacon> beacons) {
for (Beacon beacon: beacons} {
Log.d(TAG, "I see a beacon with ID1 of: "+beacon.getID1());
}
}
});