我如何启动/禁用后台监控信标在运行时与AltBeacon Library for Android



AltBeacon文档说我需要在应用程序onCreate()中初始化库用于后台监控。

但是我有在运行时初始化它所需的数据。

特别是在运行时(在远程http服务调用之后)我知道:

  • IF信标跟踪应该完全启动
  • 监控哪些区域

此外,如果某些条件发生变化(远程配置),我可能需要完全关闭它。

当前版本的库(2.5+)处理这个用例的正确方法是什么?

当使用Android Beacon Library在后台检测信标时,您可以在自定义应用程序类中构建RegionBootstrap类,如示例的背景中启动应用程序部分所述。

本例显示了在onCreate方法中设置初始Region,但没有理由需要像示例中那样是静态的。欢迎您执行代码来调用服务,以获取有关是否应该启动信标扫描以及在Region定义中应该使用哪些标识符的信息。如果将此代码放在对web服务调用的响应之后,则只需将这行代码移动到回调中:

regionBootstrap = new RegionBootstrap(this, region);

要使用自定义Application类,第一个参数仍然需要是对该类的引用。还要注意的是,这个类有一个可选的构造函数,它接受Regions的列表,以防您想要监视更多信息。

如果您想在以后更改监视的区域,那么最简单的方法是使用下面的调用:

BeaconManager.getInstanceForApplication(context)
    .stopMonitoringBeaconsInRegion(oldRegion);
BeaconManager.getInstanceForApplication(context)
    .startMonitoringBeaconsInRegion(newRegion);

注意,在初始设置中也可以使用上述技术。您可以在Application onCreate方法中构造一个虚拟区域来实例化RegionBootstrap,然后当您从web服务获得回调时,使用如上的方法调用来配置不同的区域。

注意,当停止对一个区域的监视时,您需要一个对该区域的引用。这并不需要是相同的对象——停止监视的唯一真正重要的是Region类的唯一标识符。这是一个String字段,用作标识Region的键。在下面的例子中,这个唯一标识符是"com.example.myapp.boostrapRegion"。

Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);