1

ビーコンで動作する Android アプリを開発しています (Android ビーコン ライブラリの使用のおかげです)。新しいRegionBootstrapを作成するController(私のクラス)メソッドを呼び出すBootstrapNotifierを拡張するアプリケーションがあります。アプリが起動するとすべてが正常に機能し、対応する地域に関連するビーコンは、特定の地域に出入りするときに通知をトリガーします。

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 メソッドを再度呼び出して、リージョンの新しいリストを渡す必要があると考えました。代わりに、アプリを再起動しない限り、新しいリージョンに出入りする通知はありません。これを修正する方法はありますか?ありがとう。

4

1 に答える 1

1

RegionBootstrap は 1 回だけ作成する必要があります。新しいリージョンを追加して監視対象リージョンを変更したい場合は、次のように BeaconManager で直接行ってください。

beaconManager.startMonitoringBeaconsInRegion(new Region("myMonitoringUniqueId", null, null, null));
于 2015-05-07T11:05:56.540 に答える