0

BlackBerry 655+ bluetooth ヘッドセットに接続するテスト アプリを作成しようとしています。基本的に、このアプリでやりたいことは、ヘッドセットに接続してボタンの圧力をキャッチすることです。ソケットの入力ストリームを読み取ることでそれができると思います。とにかく、ソケットに接続しようとすると、いくつかのエラーが発生します。コードは次のとおりです。

BluetoothSocket tmp = null;
try {
    tmp = mDevice.createRfcommSocketToServiceRecord(
                   UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch(IOException e) {}
mSocket = tmp;

mBtAdapter.cancelDiscovery();

try {
    mSocket.connect();   // THIS ONE GIVES A "Service discovery failed" exception
} catch (IOException e1) {
Method m = null;
try {
    m = mDevice.getClass().getMethod(
          "createRfcommSocket", new Class[] {int.class});
} catch (SecurityException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
}
try {
    tmp = (BluetoothSocket) m.invoke(mDevice, 1);
} catch (IllegalArgumentException e) {
            e.printStackTrace();
} catch (IllegalAccessException e) {
            e.printStackTrace();
} catch (InvocationTargetException e) {
            e.printStackTrace();
}
mSocket = tmp;

try {
    mSocket.connect();  // THIS ONE GIVES A "Connection refused" EXCEPTION
} catch (IOException e) {
    e.printStackTrace();
}
}

私は何を間違っていますか?m.invoke(mDevice, X) 命令ですでに別のポートを試しましたが、常に「接続が拒否されました」と表示されます

4

2 に答える 2

0

以前は Bluetooth を使っていましたが、python と Java ME を使っていたので基本は理解できました。Android APIについてはよくわかりません。

UUID コードはどこから取得しましたか? これは、サービスの検出が失敗した理由の 1 つと考えられます。

各 bluetooth デバイスには、それぞれが 1 つのポート (またはチャネル) に関連付けられた複数のサービスがあります。ubuntuを実行している場合は、hciツールを使用して、接続するチャネルまたは検索するサービスを確認してください。

于 2011-02-12T22:12:13.453 に答える
0

ここには、Bluetooth SIG からの UUIDの公式リストがあります。ヘッドセット プロファイルの場合、UUID は 0x1108 です。ユーザーが使用する UUID は Base Universally Unique Identifier であり、SDP に使用されます。

于 2011-02-13T13:26:53.817 に答える