我的應用程序在某些設備上連接到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