我正在尝试以编程方式将Android手机连接到蓝牙设备(已经配对)。我在一个帖子中使用 createRfcommSocketToServiceRecord(UUID)方法。
我知道蓝牙键盘是HID设备所以我使用的是UUID
00001124-0000-1000-8000-00805f9b34fb
上面的方法返回一个BluetoothSocket对象,但是当调用bluetoothSocket.connect()时,它无法连接到HID设备。它提供 IOException:发现失败
我已经搜索了很多,但不知道如何解决这个问题。
是否只能在Android中使用此方法连接Rfcomm而非HID设备?如果 那么,我应该采用什么替代方法呢?我正在使用三星Galaxy S3 在这个应用程序中的Android 4.1和配对后(从设置)我可以键入使用 一些内置应用程序中的蓝牙键盘,如短信,电子邮件等 在我看来,连接它应该是可能的,但我不是 确定我是否使用正确的方法。我想在我的应用程序中阅读按键串行数据。
这是我正在使用的代码:
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 :(得分:2)
是否只能在Android中使用此方法连接Rfcomm而非HID设备?
是的,不幸的是。 java方法的命名使得很清楚只支持rfcomm。 HID最有可能在原始l2cap上运行。
尝试使用InputDevice或takeKeyEvents在您的应用中获取按键数据。