Android-камера контролирует, как долго снятое изображение остается в режиме предварительного просмотра после затвора - PullRequest
3 голосов
/ 09 декабря 2011

Я делаю снимок в Android (2.3 и выше), который делает снимок, используя camera.takePicture().Это прекрасно работает, но я получаю странное поведение на разных устройствах.На моем Nexus One захваченное изображение остается на несколько секунд замороженным, а затем возвращается к предварительному просмотру.На моем Transformer он почти сразу возвращается к предварительному просмотру.

На данный момент, обходной путь должен был бы вызвать camera.stopPreview() в событии onShutter(), но это все еще немного странно, так как он не показывает фотографиюВы взяли, это показывает, что предварительный просмотр видел долю секунды после того, как вы сделали снимок.На Transformer вы даже можете увидеть его «стоп-ход-стоп-кадр», так как он останавливается на долю секунды после съемки, снова начинает двигаться, затем переходит в onShutter и останавливается, когда я звоню stopPreview().

Кто-нибудь знает где-нибудь настройку или какой-то код, который я мог бы вызвать, который сообщал бы камере, как долго удерживать это изображение перед перезапуском предварительного просмотра?Или, что еще лучше, он вообще не выпускает предварительный просмотр и ждет, пока я вызову startPreview?

1 Ответ

1 голос
/ 18 июня 2016

на моих устройствах мне нужно перезапустить предварительный просмотр вручную, он не запускается сам после съемки. Я использую функцию обратного вызова изображения, как

camera.takePicture(null, null, takePictureCallback);

и обратный вызов

private Camera.PictureCallback takePictureCallback = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera cam) {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                if (camera != null) {
                    camera.startPreview();
                }

                canTakePicture = true;
            }
        }, PHOTO_PREVIEW_LENGTH);

        new PhotoProcessor(activity, targetUri).execute(data);
    }
};

PhotoProcessor сохраняет изображение, PHOTO_PREVIEW_LENGTH - это длина в мс, показывающая продолжительность показа захваченного изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...