1

我正在编写一个使用蓝牙将数据(字节)流式传输到另一个类中的数组的 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 来索引缓冲区。

我觉得这是我在这里看的愚蠢的东西。请引导我朝着正确的方向前进,这样我就可以理解为什么每次调用该方法时我的索引都会被重置。

4

0 回答 0