2017-12-02 28 views
0

私はウェアからデータが必要なアプリを開発しています。Android Wear:BleLEScanがバッテリーを節約しています

データタイプの1つは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スキャンでテストして、それなしでテストしましたその差は巨大で、1時間あたりのBLEスキャン電池消費は約3%であるのに対し、BLEスキャンでは16%を超える。

BLELeScanのバッテリ消費を最適化するにはどうすればよいですか?私はスキャンを連続して実行する必要があります。

+0

連続的なBLEScansはバッテリの放電であり、周囲には道がありません。また、10%はやや高いようです。 10%の排水時間はどれくらいですか? –

+0

@ lakshman.pasala:私はBLEスキャンの有無にかかわらずバッテリー消費の正確なデータを含めるように質問を編集しました。 –

+0

@ Emilの回答に加えて、バッテリーが消耗している場合は、この[サポートページ](https://support.google.com/androidwear/answer/6303917?hl=ja)でAndroid Wearのトラブルシューティング方法を確認してください早く。また、この[スレッド](https://github.com/AltBeacon/android-beacon-library/issues/32)に記載されているように、BluetoothLEScannerをSCAN_MODE_LOW_POWERモードで使用する場合、コールバックはSCAN_MODE_LOW_LATENCYと同じくらい速く来ているようですが、バックグラウンドでアプリがあっても。それは、テストの後、バッテリーのドレインが常にスキャンされている可能性があります。 – abielita

答えて

0

あなたが探しているものだけに一致するようにスキャンフィルタを設定する必要があります。そうしないと、必要でないときにCPUが起動します。

また、消費電力はAndroid搭載デバイスとBluetoothチップによって大きく異なることに注意してください。

接続する特定のペアデバイスのみを検索する場合は、autoConnect = trueで直接接続することを検討してください。

0

明らかに、回答とコメントで指摘されているように、BLEスキャンは多くのバッテリ電源を消費します。どれくらい消費しますか?それはデバイスによって異なります。

12秒/分のスキャンを実行し、次に48秒間スキャンを停止することで、アプリケーションのバッテリ消費を最適化しました。 48秒後にスキャンを再開します。

サポート対象がnullではないことに注意してください.12秒後にスキャンを停止するだけです。

このアプローチは、バッテリーの消費を50%以上節約するのに役立ちました。

関連する問題