3

Android フォンを Bluetooth デバイス (既にペアリングされている) にプログラムで接続しようとしています。スレッドでcreateRfcommSocketToServiceRecord(UUID)メソッドを使用しています。

BluetoothキーボードはHIDデバイスであることを知っているので、UUIDを次のように使用しています

00001124-0000-1000-8000-00805f9b34fb

上記のメソッドは BluetoothSocket オブジェクトを返しますが、bluetoothSocket.connect() が呼び出されると、HID デバイスへの接続に失敗します。IOException : 検出に失敗しました

私はこれについて多くのことを検索しましたが、これを修正する方法はわかりません。

Androidでこのアプローチを使用してHIDデバイスではなくRfcommを接続することは可能ですか? もしそうなら、これにどの代替アプローチを使用する必要がありますか? このアプリケーションで Android 4.1 を搭載した Samsung Galaxy S3 を使用しており、(設定から) ペアリングした後、SMS、電子メールなどの組み込みアプリで Bluetooth キーボードを使用して入力できました。正しいアプローチを使用しているかどうかわかりません。アプリでキープレス シリアル データを読み取りたい。

私が使用しているコードは次のとおりです。

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) { }
    }
}
4

1 に答える 1

2

Androidでこのアプローチを使用してHIDデバイスではなくRfcommを接続することは可能ですか?

残念ですがそうです。Java メソッドの命名は、rfcomm のみがサポートされていることを明確に示しています。HID は、ほとんどの場合、生の l2cap で動作します。

InputDeviceまたはtakeKeyEventsを使用して、アプリでキープレス データを取得してみてください。

于 2013-03-01T18:58:46.623 に答える