嵌入式系统项目,我将使用蓝牙模块从我的微控制器到Android设备获得一些响应,我无法从此行bytes = "mmInStream.read(buffer)"
获取字节。
当我使用这个将byte []缓冲区转换为String时
String data=new String(bytes)
我没有得到我从微控制器发送的数据。有时人格不足......
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
String data=new String(bytes);
System.out.println(data);
// Send the obtained bytes to the UI Activity
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
请帮帮我
答案 0 :(得分:0)
尝试使用BufferedReader代替。
它从字符输入流中读取文本,从而缓冲字符 为了提供有效的字符,数组和 线。
如果您使用Java 7或更早版本,以下代码将有所帮助:
try (BufferedReader reader = new BufferedReader(new InputStreamReader(mmInStream))){
String line = null;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
connectionLost();
} catch(IOException e) {
e.printStackTrace();
}
如果您使用Java 6或更低版本而不是使用此代码:
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(mmInStream));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connectionLost();
}
但这种方法有缺点。你可以阅读它们,例如here