bluetooth-lowenergy - 后台信标监控的响应能力(Android Beacon Library/Kontakt SDK/Estimote SDK)

标签 bluetooth-lowenergy ibeacon ibeacon-android altbeacon android-ibeacon

背景:

我正在开发一个 Android 应用程序,用于监视后台的特定信标,并在检测到进入时执行自定义编码。 我目前正在使用 Android Beacon 库对此进行探索,并且能够在屏幕打开时(几秒钟内)的大部分时间响应地检测到信标。

但是,当屏幕关闭时,响应能力会下降,可能需要几分钟到半小时才能检测到。

我想知道是否有方法可以提高响应能力,因为我的使用场景需要响应式后台检测,而无需打开手机(查看可靠的 < 1 分钟响应时间)。

我目前使用 Android 8 进行测试,但最终需要支持 Android 6+。

具体问题:

1) 使用 Android Beacon 库,我正在尝试使用“new BackgroundPowerSaver(this)”行的引用应用程序。删除这条线是否会提高响应能力(在 Android 5-7、Android 8 中),但会增加功耗?

2) 当我尝试删除“new BackgroundPowerSaver(this)”行时,应用程序停止工作(无法监控,也无法进行测距)。我已在 list 中添加了蓝牙和精细位置权限。在没有后台节能程序的情况下如何实现此功能?

3) 除了 Android Beacon Library 之外,我还没有探索过其他 SDK,例如来自 Kontakt 和 Estimote 的 SDK。与 Android Beacon 库相比,这些 SDK 是否能够支持响应更快的后台监控?

4) 除了 Android Beacon Library 之外,如果我直接使用 Android 蓝牙 API,是否可以实现后台所需的响应能力?有引用应用吗?

谢谢。

最佳答案

BackgroundPowerSaver 自动在恒定扫描(前台)和占空比扫描(后台)之间切换。如果删除它,您最终将一直进行持续扫描,这将在 Android 4.3-7.x 上消耗更多电量。

然而,Android 8 有新的限制,阻止执行此操作。 操作系统限制后台应用程序在后台运行的时间每次不超过 10 分钟。无论您使用哪种扫描 SDK 或内置 API,都存在此操作系统限制。Android 8 上的作业计划程序允许计划的扫描作业最多每 15 分钟运行一次(有时由于操作系统延迟,运行时间会更长) ),因此这是运行扫描频率的限制因素。

我写了一篇关于此的博客文章 here

如果您希望实现持续的后台扫描,请为您的应用设置前台服务。前台服务会在屏幕顶部向用户显示一个图标,让他们知道它正在运行,然后允许应用程序无限期地在后台运行,即使在 Android 8 上也是如此。

编辑:在 Android 8.1+ 上,如果屏幕关闭,扫描将被阻止,除非您附加了过滤器。 Android Beacon Library 2.13 及更高版本会自动设置过滤器,以确保在这种情况下这些扫描不会被阻止。如果在屏幕关闭的情况下在 Android 8.1+ 上进行测试,请确保您拥有该版本。

关于bluetooth-lowenergy - 后台信标监控的响应能力(Android Beacon Library/Kontakt SDK/Estimote SDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043925/

相关文章:

Android 在设备上未安装客户端应用程序的情况下向设备发送通知消息

android - 从后台服务估计信标区域检测

ios - 使用CoreBluetooth/CBCentralManager.h框架

android - BLE Gatt onConnectionStateChange 失败,状态 133 和 257

Android Lollipop 5.0 低功耗蓝牙中心角色性能不佳

ios - ibeacon 的后台模式

android - 从蓝牙低功耗 GATT 特性中检索大型 32 位无符号整数

objective-c - iBeacon 发射器的 major 和 minor 的最大值是多少?

android - 前台服务在 didExitRegion 上重新启动

android - 如何在单个区域添加多个信标?