2017-12-02 301 views
0

我正在开发一款需要佩戴数据的应用程序。Android Wear:BleLEScan耗尽我的电池

其中一种数据类型是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的电池消耗?我需要连续运行扫描。

+0

连续BLEScans电池耗尽,无法绕过它。另外,10%似乎有点高。多少时间10%流失? –

+0

@ lakshman.pasala:我已经编辑过这个问题,以包含有和无BLE扫描的电池消耗的确切数据。 –

+0

除了@ Emil的回答,您可能需要查看此[支持页面](https://support.google.com/androidwear/answer/6303917?hl=en)关于如何在电池耗尽时排除Android Wear故障很快。此外,正如本[线程](https://github.com/AltBeacon/android-beacon-library/issues/32)所述,在SCAN_MODE_LOW_POWER模式下使用BluetoothLEScanner时,回调看起来与SCAN_MODE_LOW_LATENCY一样快,即使在后台的应用程序。它可能是在测试之后,随着扫描一直在耗尽电池。 – abielita

回答

0

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

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

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

0

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

我通过运行扫描12秒/分钟,然后停止扫描下一个48秒,优化了应用程序的电池消耗。 48秒后,我正在重新启动扫描。

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

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

相关问题