2017-12-02 38 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=ko)에서 Android Wear 문제를 해결하는 방법을 확인하는 것이 좋습니다 빨리. 또한이 [thread] (https://github.com/AltBeacon/android-beacon-library/issues/32)에서 설명한 것처럼 SCAN_MODE_LOW_POWER 모드에서 BluetoothLEScanner를 사용할 때 콜백은 SCAN_MODE_LOW_LATENCY만큼 빠르며, 백그라운드의 앱에서도 마찬가지입니다. 그것은 테스트를 거친 후, 항상 배터리를 소모하여 스캔 할 수 있습니다. – abielita

답변

0

찾고있는 것만 일치하도록 검색 필터를 설정해야합니다. 그렇지 않으면 필요하지 않을 때 CPU가 깨어납니다.

또한 소비 전력은 Android 기기 및 Bluetooth 칩에 따라 크게 달라집니다.

페어링 할 특정 장치 만 연결하려는 경우 autoConnect = true로 직접 연결하는 것이 좋습니다.

0

답변 및 의견에서 지적한 것처럼 BLE 스캔은 많은 배터리 전력을 소모합니다. 얼마를 소비합니까? 장치에 따라 다릅니다.

12 초/분 동안 스캔을 실행 한 후 다음 48 초 동안 스캔을 중지하여 애플리케이션의 배터리 소모를 최적화했습니다. 48 초 후 스캔을 다시 시작합니다.

참고 개체가 null이 아니므로 12 초 후에 검사를 중지합니다.

이 방법을 사용하면 배터리 사용량을 50 % 이상 절약 할 수있었습니다.