Android Wear:BleLEScan正在耗尽我的电池

时间:2017-12-02 16:47:56

标签: android service bluetooth-lowenergy wear-os battery

我正在开发一款需要穿戴数据的应用程序。

其中一种数据是BLE。

我正在使用BleLeScan:

BluetoothManager bluetoothManager =
                (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();
    if (Build.VERSION.SDK_INT >= 21) {
                mLEScanner = mBluetoothAdapter.getBluetoothLeScanner();
                settings = new ScanSettings.Builder()
                        .build();
                filters = new ArrayList<ScanFilter>();
            }

mLEScanner.startScan(filters, settings, mScanCallback);

BLELeScan正在耗尽我的电池。我知道这是因为我测试了BLE扫描而没有它。差异很大,没有BLE扫描电池每小时耗电量约为3%,而BLE扫描电池耗电量则不超过16%。

如何优化BLELeScan的电池消耗?我需要连续运行扫描。

2 个答案:

答案 0 :(得分:0)

您应该将扫描过滤器设置为仅匹配您要查找的内容。否则,cpu将在不需要时被唤醒。

另请注意,功耗在很大程度上取决于您拥有的Android设备和蓝牙芯片。

如果您只想查找要连接的特定配对设备,请考虑使用autoConnect = true直接连接到该设备。

答案 1 :(得分:0)

显然,正如答案和评论中所指出的,BLE扫描消耗大量电池电量。消耗多少钱?这取决于设备。

我通过以12秒/分钟的速度运行扫描然后在接下来的48秒内停止扫描来优化应用程序的电池消耗。 48秒后,我重新开始扫描。

注意,我没有使任何支持对象为null,我只是在12秒后停止扫描。

这种方法帮助我节省了超过50%的电池消耗。