如何使用 Android 的 AltBeacon 库在运行时启动/禁用信标后台监控?
How can I start / disable background monitoring for beacons at runtime with AltBeacon Library for Android?
AltBeacon documentation 说我需要在 Application onCreate() 中初始化库以进行后台监控。
但我有在运行时初始化它所需的数据。
特别是在运行时(在远程 http 服务调用之后)我知道:
- IF 信标跟踪应该完全启动
- 要监控哪些地区
此外,如果某些条件发生变化(远程配置),我可能需要将其完全关闭。
当前版本的库 (2.5+) 处理此用例的正确方法是什么?
使用示例的 Android Beacon Library to detect beacons in the background, you construct a RegionBootstrap
class in a custom Application class as described in the Starting an App in the Background 部分时。
此示例显示了在 onCreate
方法中设置初始 Region
,但没有理由需要像示例中那样是静态的。欢迎您执行代码来调用服务以获取有关是否应启动信标扫描以及应在 Region
定义中使用哪些标识符的信息。如果你把它放在对网络服务调用的响应之后,你只需将这行代码移到那个回调中:
regionBootstrap = new RegionBootstrap(this, region);
为了与自定义 Application
class 一起使用,第一个参数仍然需要是对 class 的引用。另请注意,此 class 有一个替代构造函数,它采用 Regions
的列表,以防您想要监视更多。
如果您想稍后更改监控的区域,那么最简单的方法是使用如下调用:
BeaconManager.getInstanceForApplication(context)
.stopMonitoringBeaconsInRegion(oldRegion);
BeaconManager.getInstanceForApplication(context)
.startMonitoringBeaconsInRegion(newRegion);
请注意,也可以在初始设置中使用上述技术。您可以在 Application
onCreate
方法中构造一个虚拟区域来实例化 RegionBootstrap
,然后在您从 Web 服务获得回调时使用上述方法调用来配置不同的区域。
请注意,停止监视某个区域时,您需要引用该区域。这不需要是同一个对象——对于停止监视唯一真正重要的是 Region
class' 唯一标识符。这是一个 String
字段,用作识别 Region
的关键字。在下面的示例中,该唯一标识符是 "com.example.myapp.boostrapRegion".
Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);
AltBeacon documentation 说我需要在 Application onCreate() 中初始化库以进行后台监控。
但我有在运行时初始化它所需的数据。
特别是在运行时(在远程 http 服务调用之后)我知道:
- IF 信标跟踪应该完全启动
- 要监控哪些地区
此外,如果某些条件发生变化(远程配置),我可能需要将其完全关闭。
当前版本的库 (2.5+) 处理此用例的正确方法是什么?
使用示例的 Android Beacon Library to detect beacons in the background, you construct a RegionBootstrap
class in a custom Application class as described in the Starting an App in the Background 部分时。
此示例显示了在 onCreate
方法中设置初始 Region
,但没有理由需要像示例中那样是静态的。欢迎您执行代码来调用服务以获取有关是否应启动信标扫描以及应在 Region
定义中使用哪些标识符的信息。如果你把它放在对网络服务调用的响应之后,你只需将这行代码移到那个回调中:
regionBootstrap = new RegionBootstrap(this, region);
为了与自定义 Application
class 一起使用,第一个参数仍然需要是对 class 的引用。另请注意,此 class 有一个替代构造函数,它采用 Regions
的列表,以防您想要监视更多。
如果您想稍后更改监控的区域,那么最简单的方法是使用如下调用:
BeaconManager.getInstanceForApplication(context)
.stopMonitoringBeaconsInRegion(oldRegion);
BeaconManager.getInstanceForApplication(context)
.startMonitoringBeaconsInRegion(newRegion);
请注意,也可以在初始设置中使用上述技术。您可以在 Application
onCreate
方法中构造一个虚拟区域来实例化 RegionBootstrap
,然后在您从 Web 服务获得回调时使用上述方法调用来配置不同的区域。
请注意,停止监视某个区域时,您需要引用该区域。这不需要是同一个对象——对于停止监视唯一真正重要的是 Region
class' 唯一标识符。这是一个 String
字段,用作识别 Region
的关键字。在下面的示例中,该唯一标识符是 "com.example.myapp.boostrapRegion".
Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);