我正在使用BluetoothLeScanner扫描BLE设备,我开始使用:
startScan(null, settings.getScanSettings(), scanCallback);
每隔一段时间,对startScan()的调用都不会发现任何BLE设备,即使一些设备实际上是在通告(它们是使用nRF连接应用程序发现的)。
当这种情况发生时,下一次对stopScan()和startScan()的调用会发现设备。
我知道从Android7开始,开始和停止扫描的次数被限制在30秒的窗口内5次。但是,我注意到,如果没有调用stopScan()/startScan()超过30秒,也会出现问题。
有没有人遇到过这样的问题?会不会是我的应用程序在启动扫描程序时正在做的其他事情导致扫描失败?
我在使用安卓10及更低版本时遇到了这个问题。
发布于 2021-01-31 13:24:12
Android手机限制BLE扫描时长,以节省能源。所以你很长一段时间都不能扫描BLE广告。这是系统限制,因此应用层无法改变这一点。
在较旧的手机(可能低于4.4)不要设置限制,但它会使手机变热。
如果你想长时间扫描BLE广告,改变你的设计是一个更好的方法。
https://stackoverflow.com/questions/65941190
复制相似问题