3
目前我正在開發一款新的Android應用程序。我需要該應用程序的藍牙。每次我想通過serversocket/socket系統連接兩個(配對)設備時,我無法創建一個工作套接字。它總是返回:在Android上需要選擇哪個UUID進行藍牙連接
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
所以我的問題是:我使用無效的UUID?如果情況並非如此。你有什麼其他的建議可能是錯的?
public Accept(BluetoothAdapter bt, BluetoothDevice device, Context context) {
try {
BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
BluetoothServerSocket tmp = null;
try {
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00294F9B3423");
//Here is the point when it doesn't work...
tmp = bt.listenUsingRfcommWithServiceRecord(context.getResources().getString(R.string.bt_string_for_profile_image), uuid);
} catch (Exception e) {
}
mmServerSocket = tmp;
bt_device = device;
} catch (Exception e) {
}
}
感謝您的幫助提前。
首先:感謝您的回覆。但我很遺憾地說,這並沒有解決我的問題。我可能沒有給你足夠的代碼。我的代碼看起來像你可以在這裏看到的那樣:[link](https://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingAsAServer)所以我把它當作一個線程來處理。我在該Thread的run()方法中調用accept() - Methode。 – Swittmann
但是,只要我稱之爲方法bt.listenUsingRfcommWithServiceRecord(context.getResources()。getString(R.string.bt_string_for_profile_image),uuid); throws serversocket的通道是-1,所以我認爲這個方法肯定是個問題? – Swittmann
Ohhh ..對不起,我不知道你的完整代碼...現在,你可以在這裏做的第一件事是檢查listen函數返回的錯誤代碼/異常。這將有助於我們理解錯誤的原因。在我閱讀您提供的鏈接時,listen可以在這些情況下僅在出現錯誤時拋出異常,例如藍牙不可用,或者權限不足或使用頻道不正確。「 – aksonlyaks