3

I'm running background service that scan for BLE devices 24/7 using Android BLE API.My service run using START_STICKY. When i find a specific device i do my work.

My question is : Do i still get ScanCallback when my device go to deep sleep or do i need to acquire PARTIAL_WAKE_LOCK to prevent CPU from going to deep sleep to get ScanCallback ?

Thanks.

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);
}
Salah Hammouda
  • 303
  • 2
  • 19

1 Answers1

0

You should use a Foreground Service in the process where you have the BLE scanner to avoid your app from being killed in the background.

Emil
  • 16,784
  • 2
  • 41
  • 52