2013-09-30 45 views
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沒有成功。

回答

0

HID是基於在Android中L2CAP藍牙輪廓(協議?),其is not implemented(線107),爲2013年十月

的這使得目前不可能連接到HID設備。