How can I “refresh” my RegionBootstrap (Android Beacon Library)?

 ̄綄美尐妖づ 提交于 2019-12-11 12:44:00

问题


I am developing an Android app that works with Beacons (thanks to the usage of Android Beacon Library). I have an Application that extends BootstrapNotifier that calls a Controller (my class) method which creates a new RegionBootstrap. Everything works fine when the app starts and the Beacons related to the corresponding Regions triggers notifications when they enter or leave that specific Region.

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);
    ...

}

This is the Controller:

public class Controller {
...
    public void setRegionBootstrap(ArrayList<Region> regionList){

        this.regionBootstrap = new RegionBootstrap(this.bootstrapNotifier, regionList);

    }

    public void setBootstrapNotifier (BootstrapNotifier bn){
        this.bootstrapNotifier = bn;
    }
}

Now, I give the possibility to add Regions, and I would like to immediately detect when a Beacon enters or leaves that Region. To do so, I thought I had to simply re-call that setRegionBootstrap method, passing the new list of Regions. Instead, I have no notifications of entering or leaving the new Region unless I restart the app. Any idea of how I can fix this? Thanks.


回答1:


You should construct a RegionBootstrap only once. If you want to alter the monitored regions by adding new ones, just do so directly on BeaconManager like this:

beaconManager.startMonitoringBeaconsInRegion(new Region("myMonitoringUniqueId", null, null, null));


来源:https://stackoverflow.com/questions/30097586/how-can-i-refresh-my-regionbootstrap-android-beacon-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!