背景:
我正在开发一个 Android 应用程序,用于监视后台的特定信标,并在检测到进入时执行自定义编码。
我目前正在使用 Android Beacon Library 进行探索,并且能够在屏幕打开时(几秒钟内)的大部分时间响应地检测到信标。
但是,当屏幕关闭时,响应能力会下降,可能需要几分钟到半小时才能检测到。
我想知道是否有方法可以提高响应能力,因为我的使用场景需要响应式背景检测,而无需打开手机(查看可靠的
我目前使用 Android 8 进行测试,但最终需要支持 Android 6+。
具体问题:
1)使用Android Beacon Library,我正在用“new BackgroundPowerSaver(this)”行尝试参考应用程序。删除这条线是否会提高响应能力(在 Android 5-7、Android 8 中),但会增加功耗?
2)当我尝试删除“new BackgroundPowerSaver(this)”行时,应用程序停止工作(无法监控,也无法进行测距)。我已在清单中添加了蓝牙和精细位置权限。在没有后台节能程序的情况下如何实现此功能?
3)除了Android Beacon Library之外,我还没有探索过其他SDK,例如来自Kontakt和Estimote的SDK。与 Android Beacon 库相比,这些 SDK 是否能够支持响应更快的后台监控?
4)除了Android Beacon Library之外,如果我直接使用Android蓝牙API,是否可以达到后台所需的响应能力?有什么参考应用吗?
Thanks.
BackgroundPowerSaver 自动在恒定扫描(前台)和占空比扫描(后台)之间切换。如果删除它,您最终将一直进行持续扫描,这将在 Android 4.3-7.x 上消耗更多电量。
然而,Android 8 有新的限制,阻止这样做。操作系统限制后台应用程序在后台运行的时间每次不超过 10 分钟。无论您使用哪种扫描 SDK 或内置 API,此操作系统限制都存在。Android 8 上的作业调度程序允许计划的扫描作业最多每 15 分钟运行一次(有时由于操作系统延迟而需要更长的时间),因此这是扫描运行频率的限制因素。
我写了一篇关于此的博客文章here
如果你想实现后台不断扫描,设置前台服务与您的应用程序。前台服务会在屏幕顶部向用户显示一个图标,让他们知道它正在运行,然后允许应用程序无限期地在后台运行,即使在 Android 8 上也是如此。
EDIT:在 Android 8.1+ 上,如果屏幕关闭,扫描将被阻止,除非您附加了过滤器。 Android Beacon Library 2.13 及更高版本会自动设置过滤器,以确保在这种情况下这些扫描不会被阻止。如果在屏幕关闭的情况下在 Android 8.1+ 上进行测试,请确保您拥有该版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)