Android cwac-камера для съемки нескольких фотографий?

Название может быть неясным, но я использую эту замечательную библиотеку CommonsWare(кстати, приятно встретиться с вами на DroidCon), чтобы справиться с печально известными проблемами с фрагментированным API камеры Android.

Я хочу сделать 5 фотографий или кадров.. но не одновременно. Каждый кадр должен делать еще один снимок с интервалом в несколько миллисекунд или, предположительно, после того, как предыдущая фотография была успешно снята. Можно ли это сделать?

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

  mCapture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            try {


                takePicture(true, false);


            }catch(Exception e){
                e.printStackTrace();
            }
        }
    });

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

По умолчанию результатом съемки является возврат CameraFragment в режим предварительного просмотра, готовый сделать следующий снимок. Если вместо этого вам нужен только один снимок или вы хотите сначала отправить пользователя в какой-то другой бит пользовательского интерфейса и не хотите, чтобы предварительный просмотр запускался снова, переопределите useSingleShotMode() в CameraHost, чтобы вернуть true. Или вызовите useSingleShotMode() в SimpleCameraHost.Builder, передав логическое значение для использования по умолчанию. Или вызовите метод useSingleShotMode() для вашей PictureTransaction, чтобы управлять этим для отдельного изображения.

Я искал обратный вызов, например, onPictureTaken() или что-то подобное внутри CameraHost, который позволил бы мне сделать снимок и сразу же сделать снимок, прежде чем отпустить камеру, но я не вижу ничего подобного. Кто-нибудь когда-либо делал что-то подобное с помощью этой библиотеки? Могут ли иллюзорные CommonsWare, пожалуйста, пролить некоторый свет на это (если вы это видите?)

Спасибо!

1 ответ

Прочитайте процитированный абзац до следующего, который начинается с:

Тогда вы, вероятно, захотите использовать свою собственную реализацию saveImage() в CameraHost, чтобы делать все, что вы хотите, вместо перезапуска предварительного просмотра. Например, вы можете начать другое действие, чтобы сделать что-то с изображением.

Если то, что вы хотите, возможно, вы бы позвонили takePicture() снова в saveImage() вашей CameraHostКроме того, что вы делаете с изображением, которое вы получили.

Тем не мение:

  • Даже при включенной большой куче у вас может не хватить места в куче для того, что вы пытаетесь сделать. Возможно, вам придется явно выбрать изображение с более низким разрешением для изображений.

  • Это не совсем в рамках библиотеки. Это может работать, и у меня нет проблем с его работой, но возможность сделать N снимков за M секунд не является частью зуда библиотеки, который я (очень очень медленно) чешу. В частности, я не думаю, что я тестировал фотографирование с уже отключенным предварительным просмотром, и в моем коде могут быть некоторые проблемы в этой области.

  • В долгосрочной перспективе вам лучше будет обрабатывать кадры предварительного просмотра, чем делать снимки.

Другие вопросы по тегам