遇到一个困扰的问题,蓝牙扫描的时候,要是锁屏或者黑屏后,后台不能持续扫描,经过一番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地址: