Android8.0 蓝牙低功耗扫描锁屏停止问题

遇到一个困扰的问题,蓝牙扫描的时候,要是锁屏或者黑屏后,后台不能持续扫描,经过一番google,

有人提出需要在扫描里面加fillter,但是针对有些手机还是无效,目前对于我的小米9是有效的,记录一下

在此处,构建了一个空的fillter
adapter.getBluetoothLeScanner()
.startScan(Collections.singletonList(new ScanFilter.Builder().build()), new ScanSettings.Builder().build(), btCallback);

再次扫描时,黑屏也会在后台扫描(前提是没有被系统kill)。

如果需要快速扫描出结果,需要设置低延迟模式扫描,大概1秒能扫描5-8次同一设备:

adapter.getBluetoothLeScanner()
.startScan(Collections.singletonList(new ScanFilter.Builder().build()), 
new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(),btCallback);

未解决的问题:蓝牙在黑屏一分钟以后,无法再扫描到设备,此方案无效

小米手机测试时,把app的省电策略改为无限制,蓝牙可以继续扫描,不知道其他手机是否有类似的策略限制

附Stack Overflow地址:

https://stackoverflow.com/questions/48077690/ble-scan-is-not-working-when-screen-is-off-on-android-8-1-0