저는 Galaxy S10, android 10을 사용하고 있습니다. 여기 에서 삼성 기기를 사용한 BLE 스캔은 화면이 꺼진 상태에서 스캔하려면 비어 있지 않은 스캔 필터가 필요합니다.
아래는 내 AdvertiseData 및 ScanFilter 코드입니다.
ParcelUuid aaUuid = ParcelUuid.fromString("0000aa11-0000-1000-8000-00805F9B34FB");
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(aaUuid)
.build();
ScanFilter scanFilter = new ScanFilter.Builder()
.setServiceUuid(aaUuid)
.build();
화면이 켜져 있으면 잘 작동합니다. 그러나 화면이 꺼지면 작동하지 않습니다.
이것을 확인하기 위해 10 회 스캔을 설정했습니다. 처음에는 화면을 켜면 잘 작동합니다. 화면이 꺼지면 첫 번째 스캔이 잘 작동합니다. 그러나 다음 스캔 결과가 나타나지 않고 다음 스캔 프로세스를 시작합니다 (결과없이).
각 스캔 반복에 대한 'WakeLock'은 동일한 결과를 만듭니다. 이 문제를 해결하는 방법?
추가 1. WorkManager를 사용하여 백그라운드 프로세스를 처리했습니다. 그런 다음 다른 방법을 찾고있었습니다.
2. 아래는 내 스캔 콜백 코드입니다.
private ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
super.onScanResult(callbackType, result);
if (result.getDevice().getName() != null)
setBleScanResult(result);
}
@Override
public void onBatchScanResults(List<ScanResult> results) {
super.onBatchScanResults(results);
}
@Override
public void onScanFailed(int errorCode) {
super.onScanFailed(errorCode);
Log.d("LOG_BLESCANNING_onScanFailed", "Error Code : " + errorCode);
}
};
추가 3. 화면이 꺼 졌을 때의 내 로그입니다.
...
D/Worker: ============ Bluetooth Scanning start ============
D/LOG_BluetoothScan: Bluetooth scanning started successfully
D/BluetoothAdapter: isLeEnabled(): ON
D/BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=4 mScannerId=0
D/BluetoothAdapter: isLeEnabled(): ON
D/LOG_BluetoothScan: Bluetooth scanning stopped
...
화면에
D/Worker: ============ Bluetooth Scanning start ============
D/LOG_BluetoothScan: Bluetooth scanning started successfully
D/BluetoothAdapter: isLeEnabled(): ON
D/BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=4 mScannerId=0
D/LOG_BluetoothScan: W S10 | [00001111-0000-1000-8000-00805f9b34fb] | 55:40:DE:86:D0:03
D/LOG_BluetoothScan: W S10 | [00001111-0000-1000-8000-00805f9b34fb] | 55:40:DE:86:D0:03
D/LOG_BluetoothScan: W S10 | [00001111-0000-1000-8000-00805f9b34fb] | 55:40:DE:86:D0:03
D/LOG_BluetoothScan: W S10 | [00001111-0000-1000-8000-00805f9b34fb] | 55:40:DE:86:D0:03
D/BluetoothAdapter: isLeEnabled(): ON
D/LOG_BluetoothScan: Bluetooth scanning stopped
추가 4. '왜이 문제가 BLE 스캐닝에서만 발생합니까?'가 궁금합니다. 화면이 꺼진 상태에서 광고를 확인하는데 문제가 없습니다.
추가 5. 광고도 문제가 있지만 필수는 아닙니다. MainActivity-Worker (WorkManager에서) 연결은이 상황을 제어하는 데 좋지 않습니다.