gpt4 book ai didi

安卓蓝牙 LE SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES

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

在我的 Android(API 版本 21 及更高版本)Bluetooth LE 应用程序中,该应用程序首先使用 BluetoothLeScannerScanCallback 对象扫描外围设备。

这在应用程序启动的前几次工作正常,但在从 Android Studio 启动和停止应用程序几次后,onScanFailed() 回调被调用并带有 errorCode of 5。这段代码甚至没有被 ScanCallback.java 公开,但消息来源显示它被声明为 public static final int SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES = 5

出现此错误时,恢复应用程序正常行为的唯一方法是关闭蓝牙然后重新打开。

这个错误代码似乎完全没有记录,而且很少见。让事情变得更有趣的是,在发现设备之后,应用程序开始使用另一个监听设备广播的回调进行扫描。此扫描 session 将始终可靠地启动,即使在初始发现扫描收到错误代码 5 之后也是如此。

两个不同的 ScanCallback 的设置在几个方面有所不同。

发现扫描器的设置如下:

ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)
.also {
if(Build.VERSION.SDK_INT >= 23)
it.setCallbackType(ScanSettings.CALLBACK_TYPE_FIRST_MATCH)
}
.build()

还有一个过滤器:ScanFilter.Builder().setServiceUuid(BluetoothUUID.service.parcelUuid).build()

同时,广播监听扫描仪设置如下:

ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build()

广播扫描器的过滤器是空的。

我如何避免将 BLE 子系统置于这种状态,为什么会发生这种情况?

最佳答案

摆脱这种情况的解决方案是不使用 ScanSettings.CALLBACK_TYPE_FIRST_MATCH。这是 Android,拥有丰富的不同设备,您的里程可能会有所不同。

关于安卓蓝牙 LE SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102089/

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