无法将蓝牙键盘连接到android设备



我正在尝试以编程方式将Android手机连接到蓝牙设备(已经配对)。我在一个线程中使用createRfcommSocketToServiceRecord(UUID)方法。

我知道蓝牙键盘是一个HID设备所以我使用UUID作为

00001124 - 0000 - 1000 - 8000 - 00805 - f9b34fb

上面的方法返回一个BluetoothSocket对象,但是当调用BluetoothSocket .connect()时,它无法连接到HID设备。它给出IOException: discovery failed

我已经搜索了很多关于这个,但没有线索如何解决这个问题。

是否只能在Android中使用这种方法连接Rfcomm而不是HID设备?那么,我应该使用什么替代方法呢?我用的是三星Galaxy S3Android 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) { }
    }
}

是否只能在Android中使用这种方法连接Rfcomm而不是HID设备?

是的,不幸的是。java方法的命名很清楚地表明只支持rfcomm。

尝试使用InputDevice或takeKeyEvents在应用程序中获取按键数据。

相关内容

  • 没有找到相关文章

最新更新