我正在編寫一個針對API 7(我的設備是API 8-2.2)的藍牙應用程序。當我嘗試連接藍牙套接字時,彈出窗口提示用戶與設備配對,但有時連接超時或失敗。在這些情況下,彈出消失而不點擊任何內容,但設備在藍牙設置中顯示爲「配對但未連接」。即使連接失敗,Android藍牙配對設備
如果我直接從藍牙設置連接到藍牙設備,則不會發生;如果用戶實際點擊「Pair」,設備只會顯示「配對但未連接」。
下面是商建立連接的代碼,它似乎很簡單:
try {
BluetoothDevice btDevice = _btAdapter.getRemoteDevice(address);
_btAdapter.cancelDiscovery();
sock = btDevice.createRfcommSocketToServiceRecord(SafConstants.BT_UUID);
sock.connect();
} catch (IOException e) {
logger.error("socket connection failed", e);
if (sock != null) {
try {sock.close();}
catch (IOException e1) {}
}
}
這是一個Android的問題還是我應該做點別的?我搜索了API以查看是否可以從綁定設備集中移除設備(如果連接失敗),但似乎這是不可能的。
編輯:我注意到的一件事是,當我嘗試通過我的應用程序進行連接時,筆記本電腦上會提示它正在嘗試在配對之前訪問耳機服務。幾秒鐘後,我終於會在我的筆記本電腦上看到設備正在嘗試配對的提示。
如果我通過藍牙設置進行連接,則會提示首先配對設備,然後成功提示設備嘗試訪問耳機服務。我不確定這是否重要...
什麼UUID您使用的?耳機? – 2011-03-23 16:16:02
@ Dennis Mathews:我使用的是「00001101-0000-1000-8000-00805F9B34FB」,這是建議的[這裏](http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createRfcommSocketToServiceRecord% 28java.util.UUID%29)。如果我使用隨機UUID,則根本無法連接到我的筆記本電腦,並且出現「服務發現失敗」異常。 – ravun 2011-03-23 17:43:34
這並不總是適用於每部手機,因爲有些手機甚至不會讓您手動配對,而且連接時不會顯示的彈出對話框。如果Android操作系統不要求配對代碼,我已經嘗試了許多藍牙配對的解決方法,並且主要打磚牆。希望谷歌可以解決這個問題,爲傳統的藍牙。 – JPM 2011-06-09 17:02:25