2011-12-07 9 views
0

私はBluetoothSocketが操作のために開いているかどうかを確認したい.....ここに は、私が何をすべきかです:すべてのアンドロイド:BluetoothSocketとInputStream.available()

まず、私は私のからInputStreamを取得します私のプログラムは、ソケットが切断されていると判断することができます.....そして、ソケットが接続されていることを確認した後、そこからデータを読み込みたいと思います。

私がavailable()を呼び出していることを確認するために、デフォルトで0またはバイト数を返します。戻り値が0の場合、読み取り処理によってIOExceptionがスローされます。

ここに私の質問があります。

  1. は、I/Oコールまたは非同期1を遮断available()ですか?

  2. 戻り値> 0は接続中にデバイスから何らかの入力を与えた場合に限られますが、常にそうであるとは限りません。利用可能なバイトが0であれば、私は何か間違いを読んで読んでいますか?これを回避するには?

答えて

0

まず、Bluetoothサーバーに接続する必要があります。 connect()を使用して接続すると、このメソッドは接続が確立されるか接続が失敗するまでブロックされます(例外が発生します)。だから、別のスレッドでこれを実行してください。

public void run() { 
    try { 

     socket.connect(); 

        InputStream in = socket.getInputStream(); 
        //socket connected, inputStream can be used 
        //Bluetooth 
    } catch (IOException e) { 
     //Socket is refused connection with the server. 
    } 
} 
+0

読んで正しく理解するようにしてください..........もう一度質問を確認してください...... – Prasham

+2

(あなたsocket.connect場合)は、お使いのBluetoothソケットが読みする準備ができて成功し、バイトを送信します。バイトを読むには、あなたがやっているとは思わないサーバーからいくつかのバイトを送る必要があります。利用可能なバイト(available)を送信せずにavailable()を呼び出すと、0が返されます。 – Harminder

関連する問題