Android蓝牙SPP丢失/损坏的数据

时间:2016-06-16 00:39:24

标签: android performance android-bluetooth corruption data-loss

我试图通过蓝牙使用SPP将大文件(2.7MB)从服务器设备传输到Android设备。连接后,android设备读取可用字节并存储到2.7MB的缓冲区中。我正在使用变量" counter" (从0到127计数)以验证数据。

要进行实验,如果服务器设备逐字节输出文件,则所有数据都是正确的。但是,如果设备以n个字节的数据包输出(例如在这种情况下为128),则在android上接收的数据被破坏而没有任何一致的模式 - 它会错误地将值读取为0或1,但它始终固定在开头的包。

非常感谢任何有关如何防止数据丢失/损坏的建议。

在Android设备上接收:

int imageSize = 2718720;
int counter = 0;
int totalByte = 0;

byte[] buffer = new byte[imageSize];

while (totalByte < imageSize) {
    int bytesAvailable = mInStream.available();
    int numOfBytesRead = mInStream.read(buffer, totalByte, bytesAvailable);
    for (int i = totalByte; i < totalByte + numOfBytesRead; i++) {
        if (buffer[i] != counter) {
            Log.d("BTDevice", Integer.toString(i) + ". read byte = " + Integer.toString(buffer[i] & 0xff) + " - Failed");
        } else {
            Log.d("BTDevice", Integer.toString(i) + ". read byte = " + Integer.toString(buffer[i] & 0xff));
        }
        counter++;
        if (counter == 128) {
            counter = 0;
        }
    }
    totalByte += actualBytesRead;
}

输出: enter image description here

0 个答案:

没有答案