Обнаружение EOF между двумя изображениями, передаваемыми по Bluetooth - PullRequest
0 голосов
/ 23 марта 2012

Я использую Bluetooth для передачи изображения с Android camera.callback на ПК. на стороне Windows я использую DataInputStream для чтения входящих данных. проблема в том, что сторона ПК не может обнаружить конец первого изображения и второго изображения. следовательно, я не могу восстановить изображение.

ошибка DataoutputStream в следующем коде

    public void create_file() {
    synchronized (frames) {
        if (frames.size() > 0) {
            Log.i("dhiraj", "" + frames.size());
            YuvImage image = new YuvImage(frames.remove(0),
                    ImageFormat.NV21, size.width, size.height, null);

            try {
                out = new DataOutputStream(client.getOutputStream());
            } catch (IOException e1) {
                Log.i("dhiraj", "new outstream error");
                e1.printStackTrace();
            }
            Log.i("dhiraj", "new outstream");
            image.compressToJpeg(rectangle, 90, baos);
            Log.i("dhiraj", "compressed");
            try {                   
                out.write(baos.toByteArray());
                Log.i("dhiraj", "" + baos.size());
                Log.i("dhiraj", "output");
            } catch (IOException e) {
                Log.i("dhiraj", "IO");
                e.printStackTrace();
            }

            try {
                out.close();
            } catch (IOException e) {
                Log.i("dhiraj", "new outstream close error");
                e.printStackTrace();
            }
        }
    }
}

1 Ответ

0 голосов
/ 23 марта 2012

Можно ли отправить размер перед каждым изображением?Таким образом, вы можете просто прочитать для n байтов.Возможно, напишите размер в файл.

Псевдо:

for (each image)
    write (size of image) to size.txt on Android
    transfer size.txt to PC
    read the (size of image) from size.txt 
    read for (size of image) from bluetooth
end for

Другой вариант - добавить уникальную последовательность символов в конец каждого изображения и удалить ее после получения.Если это не достаточно уникально, у вас есть шанс найти эту последовательность где-то на изображении и порезать изображение на части.

...