0
我正在爲一個小而簡單的藍牙遙控器寫一個藍牙HID服務器。我正在按照文檔here。藍牙HID服務器永遠接受阻塞
我的應用程序的權限包括:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
這是我BluetoothServerSocket
閱讀
連接 - 接受螺紋:
private class AcceptThread extends Thread {
public void run() {
BluetoothSocket socket = null;
while(true) {
try {
socket = MyBluetoothServerSocket.accept(); // problematic line
} catch(IOException e) {
Log.i(BLUETOOTH_SERVICE, e.toString());
break;
}
if(socket != null) {
readInput(socket);
try {
MyBluetoothServerSocket.close();
} catch (IOException e) {
Log.i(BLUETOOTH_SERVICE, e.toString());
}
} else {
Log.i(BLUETOOTH_SERVICE, "Could not accept a connection from the socket.\n");
}
break;
}
}
}
MyBluetoothServerSocket
是這樣構成的插座:
MyBluetoothAdapter.listenUsingRfcommWithServiceRecord("MyService", UUID.fromString("00001124-0000-1000-8000-00805f9b34fb"));
UUI我在上面使用d是國內唯一一家通過以下方法我的遙控裝置報告:
MyBluetoothDevice.getUuids();
而且MyBluetoothAdapter
只是默認適配器:
BluetoothAdapter.getDefaultAdapter();
涉及的代碼的其餘部分是最小的(確保藍牙開啓,選擇正確的設備)並正常工作。遙控器綁定到手機。
上面的代碼(accept()
)中標記爲有問題的行永遠不會返回,即永遠阻塞。我究竟做錯了什麼?
編輯:我試過MyBluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord
沒有成功。