gpt4 book ai didi

Android BluetoothDevice connectGatt 在某些设备上总是失败并出现错误 133

转载 作者:行者123 更新时间:2023-12-03 22:04:12 32 4
gpt4 key购买 nike

我的应用程序在连接到某些设备上的 BluetoothGatt 时出现问题。

所有 BLE 相关代码都驻留在 android Service 中,除 Huawei CAM-L03 外一切正常。据报道,一些旧的三星 Galaxy 设备也存在问题。

我最近发现,在某些设备上,所有 BLE 通信都必须在 UI 线程上执行。我写了一个快速测试应用程序,当一切都在 UI 线程上运行时,华为问题就消失了。

我尝试在 Service 中使用主循环器创建一个 Handler:

final Context context = getApplicationContext();
Handler handler = new Handler(context.getMainLooper());
handler.post(new Runnable(){
@Override
public void run() {
BluetoothGatt gatt = device.connectGatt(context, false, callBackHandler);

}
});

但这仍然在连接回调中给出 GATT_ERROR 133,我有点怀疑,因为上下文是服务,而不是 UI 应用程序。

我在这里只看到两个选项:

  1. 列表项不支持某些设备
  2. 将所有内容移至 UI 应用以支持所有设备

我对其中任何一个都不满意。还有其他我不知道的选择吗?

最佳答案

我想出了问题到底是什么以及如何解决它。我将我的答案添加为对连接尝试时抛出的通用 gatt 错误 (133) 的另一项检查,因为我没有找到对同一问题的暗示。

this 这样的回答让我得出了错误的结论.我认为该错误已在 Android 上长期修复。我收到连接失败回调的事实表明线程问题无关紧要,因为回调已注册。

我遇到的问题与我在尝试连接到 BLE 设备时保持蓝牙适配器扫描有关。似乎有些手机有这个问题。

我的应用程序要求持续扫描服务运行的时间,我周围的所有测试电话都没有问题。华为的这个型号,会拒绝连接。

TL;DR 在尝试连接之前停止扫描,在断开连接后根据需要重新开始扫描。

关于Android BluetoothDevice connectGatt 在某些设备上总是失败并出现错误 133,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420559/

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