1.什么是蓝牙Sniff mode
Sniff mode为两个已连接的经典蓝牙设备提供了有效的降低功耗的方法。我们知道,当没有数据需要传输的时候,两个已连接的蓝牙设备之间也需要每两个slots完成一次POLL packet - NULL packet exchange,以维持ACL连接。Sniff mode通过增加POLL packet - NULL packet exchange的间隔时间(即Sniff Interval)来减少两个设备之间的通信次数,让两个设备可以在间隔时间内进入低功耗状态,从而达到节能的目的。
原文链接:https://blog.csdn.net/Wendell_Gong/article/details/129248409
一句话概括:启用蓝牙Sniff Mode可有效降低系统平均耗流,延长系统待机时长。
2.举个栗子
我们客户评估某安卓平台上蓝牙相关需求,比较关注耗流以及速率大小。我们使用一款SPP测试APK分别安装在测试设备和另一Android手机上,连接之后不发送数据。息屏后记录一断时间内的平均耗流大概在25mA左右。由于只是保持了连接并没有实际通信,这个耗流数据其实是比较高的,我们一度怀疑WCN芯片并没有正常休眠。后面在测试过程中发现,当其中一端发送一包SPP数据之后,再次进到休眠,平均耗流只有4mA-5mA.如下是比较直观的平均耗流波形图:
为何发送一包数据之后再次进到休眠状态平均耗流会降低这么多呢?
我们抓了空口log发现在SPP发送一包数据之后,对端发送了进入到Sniff mode的请求,Slots改为了498.750ms。通信频率大大降低,相同时间内有更长时间可进到低功耗状态,则对应平均耗流降低。