平台 5 - 7 的应用程序终止后,库如何在 5 秒内检测到信标?

How does the library detect a beacon in 5 seconds after app kill for platforms 5 - 7?

我正在 table 此处 http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8 并且我对库如何在 Android 平台 5-7 上的应用程序终止后实现 5 秒的检测时间感到困惑.这就是 link 所说的 - Android 4.3-7.x 上的应用程序使用 long-运行 后台服务或警报在后台定期查找信标。据我所知,闹钟不能设置为少于 15 分钟,那么 5 秒是如何工作的?

我的博客 post 的检测时间 table 您提到(转载如下)说 Android 5.0-7.x 的检测时间为 5 秒。 (澄清:它 不是 对 4.x 做出此声明。)这可以在 5.x-7 上使用 long-运行 过滤低-使用 Android 5.0 中引入的 API 进行电源扫描。 Here's the code that sets that up.

这样做是将蓝牙 LE 芯片置于低功耗模式,如果发现任何匹配预期过滤器模式的数据包,该模式会自动唤醒。唤醒后,Android OS 将扫描结果传递给库,然后库通过 didEnterRegiondidRangeBeaconsInRegion 向应用程序发送回调。此过程通常在数据包出现后仅需几秒钟。

这些扫描时间与警报无关。在 Android 4.x-7.x 上,AlarmManager 用于完全不同的目的 -- 保持长期 运行 后台服务处于活动状态。警报在未来 5 分钟内重复重置,只要服务保持 运行,它就永远不会关闭。如果应用程序由于内存不足或用户将其从屏幕上滑出而被终止,此警报将触发 BroadcastReceiver,触发 long-运行 扫描服务再次启动。

据我所知,Android 4.x-7.x 上没有任何内容限制来自 运行 的警报每 15 分钟超过一次。您可能会想到 Android 8+ 的限制,将定期的 JobScheduler 项目限制为每 15 分钟或更长时间。

Android 信标库检测次数: