4

この通常のコードを使用して、Bluetooth ソケットを開いたり接続したりしています。すべてのデバイスで完全に動作しますが、Android 4.2.1 を搭載した最新の Nexus でのみ、この IOException が発生します:「失敗したソケットの読み取りが閉じている可能性があります」。

デバイスの再ペアリングを試み、UUID を確認しましたが、すべて問題ありませんでした。前述のように、まったく同じコードが他のすべてのデバイスで機能します。現時点では、他に見るべきアイデアがありません....

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

public ConnectBluetoothThread(BluetoothDevice device) {
    mmDevice = device;
    BluetoothSocket tmp = null;
    try {
        tmp = mmDevice
            .createInsecureRfcommSocketToServiceRecord(MY_UUID);
    } catch (IOException e) {
    ...other code
    }

    mmSocket = tmp;
}

public void run() {
    mBluetoothAdapter.cancelDiscovery();

    // Make a connection to the BluetoothSocket
    try {
        mmSocket.connect();  // <=== this is where the IOException is beeing raised!!!!
    } catch (IOException e) {
    Log.e(this.getClass().getSimpleName(),
        " -> FAILED:", e);
    connectionFailed(e);

    // Close the socket
    try {
        mmSocket.close();
    } catch (IOException e2) {
    }

    return;
    }

    // Reset the ConnectThread because we're done
    synchronized (InterBT.this) {
    mConnectBluetoothThread = null;
    }

    // Start the connected thread
    connected(mmSocket, mmDevice);
}
4

0 に答える 0