1

Nexus S から Bluetooth 経由で別の Android デバイスに文字列を送信しようとしています。コードは次のとおりです。

public boolean onContextItemSelected(MenuItem item) {
  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)
  item.getMenuInfo();
  if(item.getItemId() == 0)
  {
    BluetoothDevice selDev = pairedDevices.get(info.position);
    TelephonyManager tman = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    byte[] toSend = "a text".getBytes();
            try 
            {
                BluetoothSocket socket = selDev.createInsecureRfcommSocketToServiceRecord(
                      UUID.fromString("00001105-0000-1000-8000-00805F9B34FB"));
                OutputStream out = socket.getOutputStream();
                out.write(toSend);

                return true;
            } 
            catch (Exception ex) {
                ex.printStackTrace();
                return false;
            }
    }
    return true;
}

しかし、私は常にこのIO例外を取得します: java.io.IOException: Transport endpoint is not connected

どうしたの?

4

1 に答える 1

0

安全な接続を使用すると問題が解決することがわかりました。ただし、あなたの場合connect()は、接続を開始するために呼び出す必要があります。

//Just in case cancel any discovery as this slows everything down
selDev.CancelDiscovery();

//Try the secure method too. I found that worked for me.
BluetoothSocket socket = selDev.createInsecureRfcommSocketToServiceRecord(
                      UUID.fromString("00001105-0000-1000-8000-00805F9B34FB"));

socket.Connect();

OutputStream out = socket.getOutputStream();
于 2013-09-16T13:12:43.310 に答える