2017-06-07 18 views
1

私はBLEデバイスを24時間いつでもスキャンするバックグラウンドサービスを、Android BLE APIを使用して実行しています。私のサービスはSTART_STICKYを使用して実行しています。特定のデバイスを見つけると、私は自分の仕事をします。BLEバックグラウンドスキャン

質問:私のデバイスが深いスリープ状態になってもScanCallbackを取得するか、ScanCallbackを取得するためにCPUが深いスリープ状態にならないようにPARTIAL_WAKE_LOCKを取得する必要がありますか?

ありがとうございました。

public class MYService extends IntentService { 

public void onCreate() { 
     super.onCreate(); 
     Log.e("TAG","onCreate"); 
     BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); 
     BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); 
     BluetoothLeScanner lEScanner = bluetoothAdapter.getBluetoothLeScanner(); 
     ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(); 
     List<ScanFilter> filters = new ArrayList<>(); 
     ScanFilter.Builder sfBuilder = new ScanFilter.Builder(); 
     sfBuilder.setDeviceName(DEVICE_NAME); 
     sfBuilder.setServiceUuid(ParcelUuid.fromString(ServiceUUID_D1)); 
     filters.add(sfBuilder.build()); 
     lEScanner.startScan(filters,settings,mScanCallback); 
} 

答えて

0

アプリケーションがバックグラウンドで強制終了されないようにBLEスキャナを使用するプロセスでは、フォアグラウンドサービスを使用する必要があります。

+0

ここで問題となるのは、サービスが強制終了されるということですか? PARTIAL_WAKE_LOCKを取得すると、何らかのトリックが行われませんか? –