为什么自从Lollipop以来,iBeacons扫描使用的电池更少?

时间:2018-03-05 05:03:53

标签: android ibeacon beacon android-ibeacon

根据Android Beacon Library的{​​{3}},

  

Android 5.0 +上的快速背景检测

     

在Android 5.0上,新的扫描API允许更有效的后台扫描,节省了与上述技术类似的功耗节省,但信标检测时间更快。它不需要花费五分钟来检测信标(具有上述默认值),而是通常会在几秒钟内检测到新信标。

但是看看Android的官方文档,我能找到的主要新事物是API {21}中引入的documentation。 这个新类的文档没有提到使用更少能量的任何内容。

假设Android Beacon Library也在使用这些框架,为什么它会节省更多能量呢? 即,这个库的处理与我自己的应用程序中调用startScan()有什么不同,而不使用这个库?

2 个答案:

答案 0 :(得分:1)

Android 5引入了支持扫描过滤器的新扫描API,它在BLE广告数据包中查找字节模式。这些滤波器专为在硬件中实现这些滤波器的蓝牙芯片而设计。这意味着蓝牙芯片将卸载所有处理,直到匹配为止,然后才将数据包发送到操作系统。从电池角度来看,这更有效。我在引入扫描过滤器时对Nexus 5进行的测试表明,过滤器使用的电量是未过滤扫描电池的10%。新手机上的新一代芯片效率更高。

答案 1 :(得分:1)

在Lollipop之前的API中,没有扫描窗口/间隔设置。使用的参数被硬编码为5000/5000,这意味着收音机一直在收听来电广告。

使用新API,您可以将扫描窗口/间隔设置为“平衡”,这将使用参数500/5000或类似。与无线电有效100%时相比,这需要10%的能量!

新的API也有方法,以便可以在蓝牙芯片而不是主CPU中完成数据包过滤。这可能会降低功率,但我认为这只会在嘈杂的区域(许多广​​告商)中显着。