为什么自Lollipop以来扫描iBeacon会更节省电?

4
根据Android Beacon Library文档,在Android 5.0上可以进行快速后台检测。在Android 5.0上,新增的扫描API允许更加高效的后台扫描,与上述技术相比,它可以提供类似的省电效果,但是探测信标的时间更短,一般只需要几秒钟而不是五分钟。
但是从Android官方文档中可以发现最主要的新功能是引入了BlueToothLeScanner,这个类是在API 21中引入的。这个新类的文档中并没有提到能够节省能量。
假设Android Beacon Library也是使用这些框架,那么它为什么能够节省更多能量呢?也就是说,这个库的处理方式是否与在我的应用程序中调用startScan()并且没有使用这个库有所不同?
2个回答

1

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


我没想到那是一个硬件过滤器。非常感谢! - Sira Lam
那么,实际上这意味着调用startScan()而不使用库,仍然具有相同的节省电池效果? - Sira Lam
是的,该库不使用任何未记录的API,因此您可以直接完成相同的操作。该库的优势在于它通过为您完成所有这些操作来节省开发时间。 - davidgyoung

1
在Lollipop之前的API中,没有扫描窗口/间隔设置。使用的参数是硬编码为5000/5000,这意味着无线电一直处于打开状态,监听传入的广告。
使用新的API,您可以将扫描窗口/间隔设置为“平衡”,这将使用参数500/5000或类似参数。相比无线电100%活动时,这需要10%的能量!
新的API还具有方法,使得数据包过滤可以在蓝牙芯片而不是主CPU中完成。这可能会稍微减少功耗,但我认为这只在嘈杂的区域(许多广告商)中才会显著影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接