altbeacon [2.19]+ 如何在 startRangingBeacons(region) 和 stopRangingBeacons(region) 中关闭自动绑定

altbeacon [2.19]+ how to off autobind in startRangingBeacons(region) and stopRangingBeacons(region)

我从“2.18”版本开始就一直在使用这个库。

我不得不让信标扫描在后台工作,我使用了前台服务来做到这一点。 但是电池问题很严重。 虽然设置了扫描周期,但经常会错过信标。 所以我清楚地使用“startRangingBeaconsInRegion”和“stopRangingBeaconsInRegion”的功能打开它。

直到现在我才开始迁移到最新版本,而那个最新版本现在让我很困难。 这是因为启动和停止时使用了“autobind”功能。 它杀死并创建前台服务。 使用“stopRangingBeacons(region)”函数后,每次调用“startRangingBeacons(region)”函数时,闹钟一直响

有没有办法让on/off只扫描? 要么 有没有办法关闭自动绑定?

请告诉我。

参考:https://altbeacon.github.io/android-beacon-library/autobind.html

AndroidBeaconLibrary 允许在后台进行 BLE 信标扫描,包括多种技术,包括可选使用 Android“前台服务”以允许在后台进行扩展的无限期扫描。图书馆提供了一个内置的前台服务,使这很容易做到。配置后,前台服务以这种方式工作:

  1. 每当您开始测距或监控至少一个区域时,前台服务将启动,并且phone上会显示一条通知,表明扫描服务是运行。
  2. 当您停止测距和监控所有区域时,前台服务将停止,通知将消失。

OP 询问一种情况,应用程序想要重复启动和停止测距信标,但不希望前台服务通知闪烁。 2.19 之前的库版本使手动服务绑定成为可能,但手动服务绑定在 2.19+ 中已被弃用,因为它是错误、崩溃和开发人员受挫的常见来源。

要在库版本 2.19+ 上使用自动绑定范围实现相同的效果,您有多种选择

  1. 设置 beaconManager.setIntentScanningStrategyEnabled(true),这将使用基于意图的后台扫描而不是前台服务。请参阅 here 使用此选项,图书馆永远不会显示前台服务通知(如果需要,您可以构建自己的前台服务)。但是,您可能会发现这会消耗过多电池,因为它会持续扫描。

  2. 永远不要打电话给 stopRangingBeacons(region)。相反,将扫描周期 更改为非常大的值,如下所示:beaconManager.setBackgroundBetweenScanPeriod(360000000L) /* 10 hours*/ 后跟beaconManager.updateScanPeriods()。然后当你想恢复扫描时,把它设置回它的正常值。

  3. 构建您自己的前台服务,这样您就可以完全控制通知的出现和消失。与图书馆的前台服务共享相同的通知,因此即使图书馆的前台服务停止,您的自定义前台服务也会继续显示通知。