2011-08-12 23 views
1

私はSPP経由でBluetoothから絶えず読み込み、ストリームの内容を編集テキストボックスに出力するプログラムを作成しました。AndroidからinputStreamを使用してBluetoothから読み取る

myTimer = new Timer(); 
myTimer.schedule(new TimerTask(){ 
    @Override 
    public void run(){ 
    TimerMethod(); 
    } 
},0,1000); 

private void TimerMethod(){this.runOnUiThread(startReading);} 


private Runnable startReading = new Runnable(){ 

    public void run(){ 
     EditText _txtArea = (EditText) findViewById(R.id._txtArea); 
    try{ 
     inStream = btSocket.getInputStream(); 
    }catch (IOException e3) { 
     _txtArea.append("inStream establishment Failed!"); 

    } 

今MSGの流入は、任意のサイズとすることができると私は読むことが残っているものが存在しなくなるまで読んでおきたい:私は次のスレッドを持っています。私は次のような実装を試みました:

byte[] msgIn = new byte[15]; 
    inStream.read(msgIn, 0, 15); 
      int len = msgIn.length; 
      for (int i=0; i<len; i++){ 
       out = new Character ((char) msgIn[i]).toString();  
       _txtArea.append(out); 

しかし、これは15バイトに制限されており、コードはあまり効果的ではないようです。誰かがなぜ私は次の行を=新しい文字((char)msgIn [i])toString();データが入ってくるのはASCIIで、それをcharに変換しているからです。また、プログラムの読み込みに何もないときに、すべての内容を読み込んだ後にこのメソッドを使用すると、ハングします。誰も私はすべてのデータが読み取られるまで読書を続けることができる方法を知っていますか?

答えて

0

興味がある人は、すべてのデータが送信された後にinputStream.read()が-1に達するようにストリームを閉じる必要があるからです。

関連する問題