android ble扫描功耗测试

1.背景

我们在平时通过Android 调用标准接口做ble扫描时会调用andriod 公开接口,也就是BluetoothLeScanner中的startScan方法,短时间的扫描大家可能都不太注意功耗的问题,但是如果时间扫描长的话,肯定需要注意功耗带来的影响,本篇文章主要就是给这种长时间扫描,不,短时间扫描也要注意的功耗问题

2.功耗测试

a. 不添加过滤条件直接扫描

直接调用如下:

  bleScanner!!.startScan(null, getScanSetting(ScanSettings.SCAN_MODE_LOW_LATENCY), mScanCallback)

查看cpu使用率:

adb shell top -m 40

在这里插入图片描述
可以看到扫描时蓝牙cpu使用率占用达到46%,是非常高的

b.测试添加蓝牙名称过滤

测试代码如下:

 val scanFilter = ScanFilter.Builder()
        .setDeviceName(BLE_NAME)
        .build()
 val list = ArrayList<ScanFilter>()
 list.add(scanFilter)
 bleScanner!!.startScan(list, getScanSetting(ScanSettings.SCAN_MODE_LOW_LATENCY), mScanCallback)

查看cpu使用率:
在这里插入图片描述
扫描瞬间蓝牙cpu占用率仅仅为1.3,
然后在看扫描稳定时的占用率:
在这里插入图片描述
此时占用率是非常低的。

3. 结论

大家在实际生产应用时,如果可以定义过滤的条件的场景下,扫描时一定要将ScanFilter 添加,这样能大大降低功率

发布了159 篇原创文章 · 获赞 22 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/ytuglt/article/details/101058087
今日推荐