Android (камера) - Как синхронизировать stopPreview () с onPictureTaken ()?

У меня есть приложение, в котором клиент использует камеру для съемки. Предварительный просмотр изображения отображается на планшете с использованием SurfaceView, прежде чем пользователь нажмет мою кнопку «щелкнуть». Когда человек нажимает кнопку щелчка, вызывается метод onPictureTaken, и в этом методе я сохраняю изображение, а также вызываю метод camera.stopPreview () (чтобы пользователь мог видеть сделанный снимок).

Однако есть проблема ... Если пользователь перемещается по планшету в момент съемки, неподвижное изображение, фактически показанное после вызова метода stopPreview, НЕ соответствует тому, которое я получаю в байтовом массиве метода onPictureTaken. Там есть задержка в несколько миллисекунд, из-за которой эта разница выделяется, когда пользователь перемещает планшет прямо перед тем, как сделать снимок (я знаю, что 99% людей не будут перемещать планшет во время съемки, но мой клиент на самом деле заметил эту проблему и хочет, чтобы она была исправлена ...). Я попытался переместить операцию сохранения в отдельный поток, как показано ниже, чтобы метод onPictureTaken мог выполняться максимально быстро. Тем не менее, это никак не повлияло ...

private PictureCallback pictureCallback = new PictureCallback() {

    public void onPictureTaken(byte[] data, Camera camera) {

        camera.stopPreview();
        reference = data;

        new PictureCallbackHeavy().execute();
    }
};

Я также пытался вызвать camera.stopPreview () просто ДО того, как я вызову метод takePicture (а не внутри метода onPictureTaken ()). Но результат тот же.

Что я могу сделать, чтобы синхронизировать метод stopPreview, чтобы я мог ТОЧНО показать то изображение, которое было снято и находится в массиве байтов обратного вызова onPictureTaken ()?

Заранее спасибо!! знак рав

Ответы на вопрос(1)

Ваш ответ на вопрос