Как я могу "обновить" мой RegionBootstrap (Android Beacon Library)?
Я занимаюсь разработкой приложения для Android, которое работает с Beacons (благодаря использованию библиотеки Android Beacon). У меня есть приложение, которое расширяет BootstrapNotifier, который вызывает метод Controller (мой класс), который создает новый RegionBootstrap. Все работает нормально, когда приложение запускается, и Маяки, связанные с соответствующими регионами, запускают уведомления, когда они входят или выходят из этого конкретного региона.
public class BackgroundApplication extends Application implements BootstrapNotifier, RangeNotifier {
...
@Override
public void onCreate() {
this.controller = Controller.getInstance();
mAllBeaconsRegion = new Region("all beacons", null, null, null);
//the following call returns the correct list of regions
this.regionList = this.controller.getRegionList(this);
this.regionList.add(mAllBeaconsRegion);
this.controller.setBootstrapNotifier(this);
this.controller.setRegionBootstrap(this.regionList);
...
}
Это контроллер:
public class Controller {
...
public void setRegionBootstrap(ArrayList<Region> regionList){
this.regionBootstrap = new RegionBootstrap(this.bootstrapNotifier, regionList);
}
public void setBootstrapNotifier (BootstrapNotifier bn){
this.bootstrapNotifier = bn;
}
}
Теперь я даю возможность добавить Регионы, и я хотел бы немедленно определить, когда Маяк входит или покидает этот Регион. Для этого я подумал, что мне нужно просто повторно вызвать этот метод setRegionBootstrap, передав новый список регионов. Вместо этого у меня нет уведомлений о входе или выходе из нового региона, пока я не перезапущу приложение. Есть идеи, как я могу это исправить? Благодарю.
1 ответ
Вы должны создать RegionBootstrap только один раз. Если вы хотите изменить отслеживаемые регионы, добавив новые, просто сделайте это прямо в BeaconManager следующим образом:
beaconManager.startMonitoringBeaconsInRegion(new Region("myMonitoringUniqueId", null, null, null));