我正在使用蓝牙条形码阅读器将文本传送到编辑文本。问题是,它会将条形码文本删除大约一半的时间,并向我发送不完整的文本。
我使用的是“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 :(得分: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();
答案 1 :(得分: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();