2012-03-14 18 views
2

我正在使用藍牙條形碼讀取器將文本傳送到編輯文本。問題在於,它將條形碼文本縮短了大約一半時間,併爲我提供了不完整的文本。藍牙條形碼getInputStream()

我正在使用「BluetoothSocket」類。 這是我的閱讀代碼:

int bytes = socket.getInputStream().read(buffer); 

message = message + new String(buffer, 0, bytes); 

// Send the obtained bytes to the UI Activity 
handler.post(new MessagePoster(textView, message)); 

我正在尋找一種方法,使的getInputStream的作用()會更長

+0

「緩衝區」是否夠大? – pap 2012-03-14 08:06:56

回答

1

像這樣的東西應該工作,只是繼續下去,直到字符串是預期的長度。我假設這個流只是繼續前進。

InputStream stream = socket.getInputStream(); 
StringBuilder builder = new StringBuilder(); 
do { 
    byte [] buffer = new byte[256]; 
    int bytes = stream.read(buffer); 
    builder.append(new String(buffer, 0, bytes)); 
} while ((builder.length() < 10)); 
String completeStr = builder.toString(); 
0

您可以使用像這樣從InputStream讀取...

InputStream i = socket.getInputStream(); 
     int c; 
     String message; 
     StringBuffer s = new StringBuffer(""); 
     while((c=i.read())!=-1) 
     { 
      s.append((char)c); 
     } 
     message = s.toString(); 
+0

我其實已經找到了我正在尋找的東西,以及它與您所呈現的相似。問題是我沒有追加字符串,因爲在消息thx中有幾個數據包:) – Gil 2012-03-14 11:04:26