java - 当我从 HC-06 BL Device 在 Android Studio 上获取输入流()时格式错误
问题描述
我使用此 AsyncTask 从 HC-06 获取大量字符串。我正确接收它们,但有时字符串出现在 ListView 的不同行上。
例如,如果我在 arduino Ide jghv 上发送,我在第一行得到 j,在第二行得到 ghv D/BLE_Activity: j D/BLE_Activity: ghv
有人可以告诉我我做错了什么吗?
private class Stream extends AsyncTask<Void, Void, Void>
{
protected Void doInBackground(Void... devices)
{
try {
while (btSocket.isConnected()) {
char[] buffer = new char[256];
int bytes;
InputStream tmpIn = btSocket.getInputStream();
InputStreamReader red = new InputStreamReader(tmpIn);
bytes = red.read(buffer);
String readMessage = new String(buffer, 0, bytes);
Log.d(TAG, readMessage);
Array.add(readMessage);
if (isCancelled()) break;
}
} catch (IOException e) {
}
return null;
}
}
这就是我创建 ListView 的方式
adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, Array);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
sItems = (ListView) findViewById(R.id.Stream);
sItems.setAdapter(adapter);
这是 Array 和 adapter 的声明
List<String> Array = new ArrayList<String>();
ArrayAdapter<String> adapter;
谢谢大家
解决方案
尝试逐行读取输入流中的文本
BufferedReader br = new BufferedReader(red);
String line;
while ((line = br.readLine()) != null) {
Array.add(line);
}
推荐阅读
- openlayers - 为什么我的静态图像贴图在 OpenLayers 6.3.1 中不起作用?
- autodesk-forge - 在 Autodesk forge 查看器 api 中打开新实例时如何关闭停靠面板?
- python - Keras 不适用于 3 个或更多维度。无效参数错误
- sql - 在 BigQuery 中更新结构数组中的值
- r - 抑制来自外部函数的错误消息
- python - 将数字从文本文件转换为 Python 数字
- azure - Azure Function App 中的自由文本搜索 - Application Insights
- javascript - 将表格内的文本保存到本地存储
- node.js - 错误消息:看起来您缺少一些使 Electron 运行所需的依赖项
- google-apps-script - 使用 onSelectionChange 时我做错了什么