我正在编写一个使用蓝牙将数据(字节)流式传输到另一个类中的数组的 Android 应用程序。这背后的想法是记录一定数量的数据(即缓冲区[60000]),当它已满时,将缓冲区写入文件并将其存储在SD卡上。
我遇到的问题是每次在蓝牙类上进行调用并且它处理 HandleBluetooth.write(buffer, bytes); 的方法。发送到 HandleBluetooth 类,每次通过时我的缓冲区索引都会被重置。缓冲区的索引和缓冲区都是全局变量,这让我很困惑,为什么每次将索引设置回 0 HandleBluetooth.write(buffer, bytes); 被调用,所以我永远无法填充缓冲区以将其写入文件。
这是我的代码:BluetoothSerialService.java
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[9999];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
HandleBluetooth.write(buffer, bytes);
// Send the obtained bytes to the UI Activity
//mHandler.obtainMessage(BlueTerm.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
String a = buffer.toString();
a = "";
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
手柄蓝牙类:
public static void write(byte[] buffer, int length) {
byte[] readBuf = (byte[]) buffer;
data_length = length;
for (x = 0; x < data_length; x++) {
raw = UByte(readBuf[x]);
if (odd_even_flag == 0) {
buffer1[out_index] = raw;
// System.out.println("ch1: " + buffer1[out_index]);
odd_even_flag = 1;
} else {
buffer2[out_index] = raw;
// System.out.println("ch2: " + buffer2[out_index]);
odd_even_flag = 0;
}
if (x % 10000 == 0) {
Write2File(buffer1, buffer2);
}
out_index++;
if (x >= 60000) {
StopIncomingData();
break;
}
}
}
如您所见,我一直在尝试使用全局类变量 out_index 来索引缓冲区。
我觉得这是我在这里看的愚蠢的东西。请引导我朝着正确的方向前进,这样我就可以理解为什么每次调用该方法时我的索引都会被重置。