如何在进入信标区域后才启用android library forground服务?



我使用altbeacon它运行前台服务作为默认功能,但我只想在进入信标区域时运行前台服务。或者当检测到一个信标时。这个问题似乎没有记录在任何地方。你能帮我吗?

使用AndroidBeaconLibrary 2.19+,可以使用自动绑定api在检测后轻松切换到使用前台服务。

基本步骤如下:

  1. 自定义应用程序类,在onCreate()方法中调用beaconManager.startMonitoring(region)。这将使用计划作业设置初始信标检测。

  2. 当你得到一个回调到didEnterRegion()时,你需要调用beaconManager.stopMonitoring(...)beaconManager.stopRanging(...)的所有监控和范围区域。

  3. 在步骤2之后,为前台服务配置库,如下所示

  4. 再次开始监测/测距任何所需的区域。

小心上面的方法在某些情况下,标准Android会阻止从Android 12的后台启动前台服务。此外,一些非标准的oem厂商已经在早期的Android版本上这样做了。

一般来说,推荐的做法是只有在(a)应用程序在前台或(b)你知道用户最近与应用程序的UI进行了交互时才设置前台服务。如果Android阻止你的应用启动前台服务,那么在配置了前台服务的情况下从后台启动监控/测距会导致你的应用崩溃。由于可能导致这种情况的条件很复杂且难以预测,因此该技术可能导致意外的崩溃和相关的错误。

上面的一个替代方案是使用库中引入的新的IntentScanStrategy,它允许更快的后台扫描,而不需要前台服务。

最新更新