当我从HC-06 BL设备在Android Studio上获取InputStream()时格式错误



我使用这个AsyncTask从HC-06获取大量字符串。我正确接收它们,但有时字符串出现在 ListView 上的不同行上。

例如,如果我发送arduino Ide jghv,我在第一行得到j,在第二行得到ghv深BLE_Activity: jD/BLE_Activity:生长激素

有人可以告诉我我做错了什么吗?

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;
    }
}

这就是我创建列表视图的方式

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);

这是数组和适配器的声明

 List<String> Array = new ArrayList<String>();
 ArrayAdapter<String> adapter;

感谢大家

尝试逐行读取输入流中的文本

BufferedReader br = new BufferedReader(red);
        String line;
        while ((line = br.readLine()) != null) {
            Array.add(line);
        }

最新更新