2013-02-27 160 views
3

我試圖Android手機編程方式連接到藍牙設備(已配對)。我使用createRfcommSocketToServiceRecord(UUID)在一個線程方法。無法藍牙鍵盤連接到Android設備

我知道藍牙鍵盤是一個HID設備所以我使用UUID作爲

00001124-0000-1000-8000-00805f9b34fb

上述方法返回的BluetoothSocket對象,但在調用bluetoothSocket.connect()時,它無法連接到HID設備。它給IOException:發現失敗

我已經搜索了很多,但沒有線索如何解決這個問題。

只有是否有可能使用Android的這種方法來連接RFCOMM,而不是HID設備?如果 那麼,那麼我應該用什麼替代方法呢?我使用三星Galaxy S3在此應用 搭載Android 4.1(從設置),我可以輸入一些內置應用程序,如SMS使用 藍牙鍵盤配對後,電子郵件等。 我看來,連接到它應該是可能的,但我不是 如果我使用正確的方法。我想在我的應用程序中讀取按鍵串行數據。

下面是我使用的代碼:

private class ConnectThread extends Thread { 
    private final BluetoothSocket mmSocket; 

    public ConnectThread(BluetoothDevice device) { 
     BluetoothSocket tmp = null; 
     try { 
      tmp = device.createRfcommSocketToServiceRecord(mUUID); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     mmSocket = tmp; 
    } 

    public void run() { 
     try { 
      mmSocket.connect(); 
     } catch (IOException connectException) { 
      try { 
       mmSocket.close(); 
      } catch (IOException closeException) { } 
      return; 
     } 

     Log.d(TAG, "ConnectThread connection successful"); 
    } 

    public void cancel() { 
     try { 
      mmSocket.close(); 
     } catch (IOException e) { } 
    } 
} 
+0

難道你懂嗎?以編程方式將Android連接到藍牙HID設備?這裏同樣的問題現在= /。 – 2017-09-06 15:35:26

回答

2

是隻可以連接RFCOMM並使用Android的這種方法不是HID設備?

是的,很遺憾。 java方法的命名很明顯只支持rfcomm。 HID很可能在原始l2cap上運行。

嘗試使用InputDevicetakeKeyEvents在您的應用中獲取按鍵數據。