首页 > 解决方案 > 当我从 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;

谢谢大家

标签: javaandroid

解决方案


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

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

推荐阅读