2013-02-27 161 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在您的应用中获取按键数据。