我的应用程序在某些设备上连接到BluetoothGatt时遇到问题。Android BluetoothDevice connectGatt总是在某些设备上发生错误,并且出现错误133
所有与BLE相关的代码都在android中,一切工作正常,除了华为CAM-L03。据报道,一些旧的三星Galaxy设备也有问题。
我最近发现,在某些设备上,必须在UI线程上执行所有BLE通信。我写了一个快速测试应用程序,当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应用程序。
我只在这里看到两个选项:
- 列表项不支持某些设备
- 移动一切的UI应用程序支持的所有设备
我不满足这些都是。是否还有其他我不知道的选项?
请尝试使用runOnUiThread来代替。 YOu需要一个Activity实例,虽然 – Zoe
就是这样,我没有访问一个Activity。 – unexplored
根据您运行呼叫的线程,没有什么区别蓝牙呼叫的工作方式。 Android的蓝牙API使用Android中的“活页夹”功能与蓝牙服务进行通话。错误代码133只是一个普通的错误代码,意味着它没有成功。 onConnectionChange回调中错误代码为133的最常见原因之一是连接尝试超时。 – Emil