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

时间:2015-07-23 13:22:38

标签: android ibeacon android-library ibeacon-android altbeacon

AltBeacon documentation说我需要在Application onCreate()中初始化库以进行后台监控。

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

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

  • 应始终启动信标跟踪
  • 要监控的区域

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

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

1 个答案:

答案 0 :(得分:3)

使用Android Beacon Library在后台检测信标时,您可以在自定义Application类中构建RegionBootstrap类,如示例的Starting an App in the Background部分所述。

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

regionBootstrap = new RegionBootstrap(this, region);

为了使用自定义Application类,第一个参数仍然需要是对该类的引用。另请注意,此类的替代构造函数采用Regions列表,以防您需要监视更多内容。

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

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

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

请注意,停止监视区域时,需要引用该区域。这不需要是同一个对象 - 唯一对于停止监控而言真正重要的是Region类'唯一标识符。这是一个String字段,用作标识Region的键。在下面的示例中,该唯一标识符为" com.example.myapp.boostrapRegion"。

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