Android 安卓:为什么BluetoothLeScanner有时没有发现任何可移动设备?

Android 安卓:为什么BluetoothLeScanner有时没有发现任何可移动设备?,android,bluetooth-lowenergy,android-bluetooth,android-ble,android-ble-library,Android,Bluetooth Lowenergy,Android Bluetooth,Android Ble,Android Ble Library,我正在使用BluetoothLeScanner扫描BLE设备,我开始使用: startScan(null,settings.getScanSettings(),scanCallback) 每隔一段时间,对startScan()的调用都不会发现任何可移动设备,即使某些设备实际上在做广告(它们是使用nRF Connect app发现的) 发生这种情况时,对stopScan()和startScan()的下一次调用会发现设备 我知道自从安卓7以来,启动和停止扫描的次数限制在30秒内的5次。但是,我注意到

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

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

每隔一段时间,对
startScan()
的调用都不会发现任何可移动设备,即使某些设备实际上在做广告(它们是使用nRF Connect app发现的)

发生这种情况时,对
stopScan()
startScan()
的下一次调用会发现设备

我知道自从安卓7以来,启动和停止扫描的次数限制在30秒内的5次。但是,我注意到,如果超过30秒没有调用任何
stopScan()
/
startScan()
,也会出现问题

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


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

Android手机限制了BLE扫描持续时间以节省能源。所以你不能长时间浏览不可编辑的广告。这是系统限制,所以应用层无法改变这一点

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


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

还有这个问题,有人找到解决方案吗?事实上,由于我已确保startScan()的调用频率不会超过操作系统的自动调整频率,即每次stopScan()之间至少保持6秒/startScan(),因此我不再注意到这个问题。你确定你的应用程序不会扫描得太频繁吗?