BLE背景扫描

3

我正在使用Android BLE API运行后台服务,24/7扫描BLE设备。我的服务使用START_STICKY运行。当我发现特定的设备时,我会进行相关工作。

我的问题是:当我的设备进入深度睡眠模式时,我是否仍然可以收到ScanCallback,或者我需要获取PARTIAL_WAKE_LOCK来防止CPU进入深度睡眠以获得ScanCallback?

谢谢。

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);
}
1个回答

0

在具有BLE扫描器的进程中,您应该使用前台服务以避免您的应用程序在后台被杀死。


这里唯一的问题是被杀死的服务,是这样吗?获取PARTIAL_WAKE_LOCK不会起到相同的作用吗? - Salah Hammouda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接