1

標準のBluetoothデバイス(ウォケット)に接続するための通常のコードを作成しました。私がやっていることは、クライアントとして wocket (これは単なる bluetooth チップの一部です) に接続することです。ランダムな UUID を使用して wocket に接続しています。しかし、connect メソッドは、Bluetooth デバイスに接続できないことを示す IO Exception をスローしています。私が使用しているコードは、ここの Android 開発者フォーラムからのものです: http://developer.android.com/guide/topics/connectivity/bluetooth.html

プライベート クラス ConnectThread extends Thread { private final BluetoothSocket mmSocket; プライベート最終 BluetoothDevice mmDevice;

public ConnectThread(BluetoothDevice device) {
    // Use a temporary object that is later assigned to mmSocket,
    // because mmSocket is final
    BluetoothSocket tmp = null;
    mmDevice = device;

    // Get a BluetoothSocket to connect with the given BluetoothDevice
    try {
        // MY_UUID is the app's UUID string, also used by the server code
        tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    } catch (IOException e) { }
    mmSocket = tmp;
}

public void run() {
    // Cancel discovery because it will slow down the connection
    mBluetoothAdapter.cancelDiscovery();

    try {
        // Connect the device through the socket. This will block
        // until it succeeds or throws an exception
        mmSocket.connect();
        **This call is throwing and IOException saying:
        java.io.IOException Discovery Failed.

**

    } catch (IOException connectException) {
        // Unable to connect; close the socket and get out
        try {
            mmSocket.close();
        } catch (IOException closeException) { }
        return;
    }

    // Do work to manage the connection (in a separate thread)
    manageConnectedSocket(mmSocket);
}

/** Will cancel an in-progress connection, and close the socket */
public void cancel() {
    try {
        mmSocket.close();
    } catch (IOException e) { }
}

}

wocket が IOException をスローしている理由は何でしょうか。UUIDを確立するサーバーの場合、サーバーに接続するのは意味がないと思いますが、クライアントが同じUUIDを持つことを期待しますが、私の場合はwocketをプログラムできないため、これは不可能です。

テストデバイスとして Android 4.0 を搭載した HTC one x を使用しています。

前もって感謝します。

4

1 に答える 1

0

ランダム UUID を使用しているにもかかわらず、使用しているランダム UUID が wocket でサポートされていない可能性があるため、シリアル ポート プロファイルの UUID を使用してください。あなたがするとき

createRfcommSocketToServiceRecord(MY_UUID);

接続先のデバイスでサービス検出を行い、指定した UUID がデバイスに存在するかどうかを確認し、存在する場合はデバイスに接続します。

于 2012-09-12T03:42:06.083 に答える