I am facing issue related to BLE advertisement scanning. After turning screen off my scanning is working for undefined time then stopping till I turn screen on. BtGatt.ScanManager is logging "Cannot start unfiltered scan in screen-off".
Im providing scan filters like below
class IBeaconScanFilterProvider : BeaconScanFilterProvider {
override fun get(uuid: UUID): ScanFilter {
val manufacturerData = ByteBuffer.allocate(23)
val manufacturerDataMask = ByteBuffer.allocate(23)
val uuidBytes = getByteArrayFromGuid(uuid.toString())!!
for (i in 2..17) {
manufacturerData.put(i, uuidBytes[i - 2])
manufacturerDataMask.put(i, 0x01)
}
return ScanFilter.Builder()
.setManufacturerData(
0x004C, //IBeacon
manufacturerData.array(),
manufacturerDataMask.array()
).build()
}
}
Then im starting scanning using code below
bluetoothScanner.startScan(
arrayListOf(beaconScanningContext.filters),
beaconScanningContext.settings,
RxBleBroadcastReceiver.newPendingIntent(context)
)
Every 10 minutes I am resetting scan to avoid the lock that turns off scanning after 10 minutes, added in android 8
Im testing this solution on Android 5.1 (LG G2), Android 7.1.1 (Nexus 6P), Android 8.1 (Pixel XL) and Android 10 (Xiaomi Mi9) and problem occured on Pixel and Mi9
Is there anything that im doing wrong?