我正在开发一个 Android 应用程序,它使用蓝牙连接在我的 android 智能手机和非 android 蓝牙模块之间传输数据,使用 SPP 配置文件。我使用了来自 Android 开发者网站的蓝牙聊天示例作为参考。
我已经成功地使两个设备相互连接,并将简单的字符串从智能手机发送到蓝牙模块。但是我在读取从模块发回的数据时遇到了一些错误。我使用了以下代码,与蓝牙聊天示例中的代码完全相同,从 InputStream 中读取数据
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
String str = new String(buffer);
Log.i(TAG, "mmInStream - " + str);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
当我的蓝牙模块向手机发送一个简单的字符串时,该字符串没有被正确接收。它以随机方式分成几部分。例如,如果我向手机发送 3 次“1234567890abcdef1234567890abcdef0123456789”,则 Eclipse 上的 Logcat 将记录这些:
mmInstream - 12345678910abcdef��������(continuing null)
mmInstream - 1��������(continuing null)
mmInstream - 2345678910abcdef0123456789��������(continuing null)
首次。在第二次和第三次传输数据时,它在不同的块中被接收:
mmInstream - 1234567891�������(continuing null)
mmInstream - 0abcdef012�������(continuing null)
mmInstream - 3456789���������(continuing null)
mmInstream - 1234567891����������������(continuing null)
mmInstream - 0abcdef0123456789������������(continuing null)
我不知道为什么会发生这种情况以及如何解决这个问题。如果以这样的任意方式接收数据,我将无法获得必要的数据进行处理。我怎样才能把它弄成一个整体?
任何帮助,将不胜感激。
非常感谢。