我修改了Android蓝牙聊天代码,以便从BluetoothChatService接收的字节将直接发送到BluetoothChat Activity。
另一台蓝牙设备的发送速率为125Khz,每个数据包为20字节。 因此,每秒将有大约125 * 20个字节,必须由服务接收,然后发送到活动。
但是,我发现活动收到的数据会丢失数据包。我已经确认服务中收到的数据确实是正确的。
这是向活动发送20字节对象的代码部分。
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, 20, -1, buffer)
.sendToTarget();
这是从BluetoothChatService
获取消息的处理程序private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
...}
}
知道如何解决这个问题吗?感谢。
答案 0 :(得分:0)
这是向活动发送20字节对象的代码部分。
它正在向您的缓冲区发送引用。如果在读取更多蓝牙数据时重复使用该缓冲区,则在活动有机会使用数据之前,您的旧数据可能会被覆盖。