HTC AriaのBluetooth接続エラー

※いろいろ調べたところ原因は別のようでした。詳細はこちら。(2012/5/10)

 

HTC AriaでBluetooth接続のアプリを作成しClientとして接続した際に下記エラーが発生。
(003SHでは発生しませんでした。サンプルのBluetoothChatプロジェクトでも同じような現象が発生しているのでおそらく端末依存的な不具合ではないでしょうか。)

java.io.IOException: Connection reset by peer

または

java.io.IOException: Service discovery failed

Serverとして接続した際には特に問題ありませんでした。

元ソースコード

InputStream in = null;
OutputStream out = null;

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();

in = socket.getInputStream();
out = socket.getOutputStream();

byte[] b = new byte[1024];
int l;
while(_thread != null) {
    l = in.read(b); // ここでエラーが発生している模様
    // 処理
}

原因はわかりませんでしたが回避方法を発見したので共有します。

修正ソースコード

InputStream in = null;
OutputStream out = null;

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();

in = socket.getInputStream();
out = socket.getOutputStream();

// 追加:HTC Aria用に待ちを作るとうまくいきました。
Thread.sleep(3000);

byte[] b = new byte[1024];
int l;
while(_thread != null) {
    l = in.read(b);
    // 処理
}

同じような現象に悩んでいる方は試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です