2

BluetoothLeScanner用来扫描 BLE 设备,我开始使用:

startScan(null, settings.getScanSettings(), scanCallback);

每隔一段时间,调用startScan()不会发现任何 BLE 设备,即使某些设备实际上正在做广告(它们是使用 nRF Connect 应用程序发现的)。

发生这种情况时,下一次调用stopScan()startScan()确实发现设备。

我知道从 Android 7 开始,开始和停止扫描的次数在 30 秒的窗口内被限制为 5 次。但是,我注意到如果超过 30 秒没有stopScan()/没有被调用,也会出现问题。startScan()

有没有人遇到过这样的问题?可能是我的应用程序在启动扫描仪时正在执行的其他操作导致扫描失败?

我在使用 Android 10 及更低版本时遇到了这个问题。

4

1 回答 1

0

Android 手机限制 BLE 扫描持续时间以节省能源。所以你不能长时间扫描BLE广告。这是系统限制,所以APP层没有办法改变它。

在较旧的手机(可能低于 4.4)中不要设置限制,但它会使手机变热。

如果你想长时间扫描 BLE 广告,改变你的设计是一个更好的方法。

于 2021-01-31T05:24:12.437 回答