gpt4 book ai didi

android - 保持 Android 蓝牙扫描,但它会自行停止

转载 作者:搜寻专家 更新时间:2023-11-01 09:30:55 25 4
gpt4 key购买 nike

对于特定的应用程序,我需要让 android 蓝牙扫描 LE 设备,但我发现它会在某些设备没有任何登录的情况下自行停止。我的示例代码如下:

mBluetoothLeScanner.startScan(null, mScanSettings, leScanCallback);

我确定我从不打电话

mBluetoothLeScanner.stopScan(leScanCallback)

以便我尝试查看“btsnoop_hci.log”。我发现 Controller 在一段时间内没有向主机发送广播消息,可能是 5 分钟或 10 分钟以上。在此示例中,它在 864.833537 秒处停止。有人帮助我解决了这个问题吗?

最佳答案

Android 7.0 引入了 BLE 扫描超时,任何运行 30 分钟或更长时间的扫描都会有效地自动停止,并且只会“机会性地”恢复,这实质上意味着如果另一个进程进行扫描,它也可以获得结果。

您可以通过设置代码来启动蓝牙 LE 扫描并使其无限期运行来看到这一点。恰好 30 分钟后,扫描将停止,您将在 LogCat 中看到如下条目:

  06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: clientIf set to scan opportunisticly: 6 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue=1
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - ScanSetting Scan mode=-1 mLastConfiguredScanSetting=2
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue emtpy, scan stopped 06-11 19:00:22.849 5123 5147 D BtGatt.ScanManager: stop scan

您可以在此处的 AOSP 源代码中查看执行此操作的代码:

Source code

解决此问题的方法是不要让扫描持续那么长时间。您可以简单地停止它们并定期重新启动它们。

编辑:

Check on this link

关于android - 保持 Android 蓝牙扫描,但它会自行停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com