2012-03-14 21 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