有没有模仿打开和关闭飞行模式的方法? (BluetoothLeScanner 有时检测不到任何信号)

Is there anyway to mimic turn airplane mode on and off? (BluetoothLeScanner sometimes not detecting any signals)

遇到一个问题,有时 BluetoothLeScanner 在大约 10 或 20 秒内无法检测到任何东西。

(此问题可通过运行以下代码多次重现,扫描器暂时无法工作)

bluetoothAdapter.getBluetoothLeScanner().stopScan(mScanCallback);
bluetoothAdapter.getBluetoothLeScanner().startScan(mScanCallback);

我尝试以编程方式重启 BluetoothLeScanner 并手动打开和关闭 wifi + 蓝牙,但它没有用,总是需要等待 10 秒左右,直到系统检测到 BLE 信号。

我最终打开和关闭飞行模式,一切正常(每次都有效),我不需要等待,只需打开和关闭它,系统就会检测到 BLE 信号。

我想做的是,制作一个按钮,当我点击它时,应用程序将打开和关闭飞行模式,但这似乎不适用于 Android 4.2 更高版本。有什么办法可以重现类似飞行模式的类似功能吗? (也许清除一些缓存?)

不幸的是,不支持在 Android v4.2 上打开 on/off Airplan 模式。看看下面的链接:-

有没有理由使用Android 4.2?这是一个非常过时的 OS(10 岁)并且 Android 从那时起有了很大的改进,特别是在 BLE API 和功能方面。如果您可以选择升级到较新的 OS,我建议您首先将此作为第一要务。

如果升级到较新的 OS 不是一个选项,那么我会亲自尝试解决实际问题,而不是寻找解决方法。发生这种情况的一种可能性是您扫描得太频繁,这有时会导致 return 大约 30 秒内没有扫描结果。这是一个棘手的问题,因为 Android OS 不会 return 错误 - 它只是不会 return 任何看起来与您所看到的相似的结果.查看 this link 并搜索字符串“显着扫描错误”。我还会查看 Logcat 日志,因为您有时可以在那里找到更多信息。

最后,这可能是硬件问题(尤其是旧设备)。尝试安装 nRF Connect 并扫描 BLE 设备。如果那边也有问题,那就证明是hardware/device的问题。如果那里不存在问题,那么这是您的应用程序的问题。