Камера CWAC — триггеры предварительного просмотра перезапуска

Я работаю над реализацией камеры, аналогичной тому, что предлагает Snapchat. Я создал подкласс SimpleCameraHost для настройки каталогов и путей к файлам, а также для обработки saveImage (я обрезаю изображение в квадрат, прежде чем сохранить его на диск). Я также создал подкласс CameraFragment, как вы (Марк) в демонстрации.

Мне нужно сделать три снимка (сделайте снимок... пользователь одобряет это... перейдите ко второму снимку... повторите...), прежде чем я продолжу работу с приложением. Я использую режим одиночного выстрела. В Oncreate() DemoFragment

    SimpleCameraHost.Builder builder =
            new SimpleCameraHost.Builder(new MyCameraHost(getActivity(), useFFC));

    setHost(builder.useSingleShotMode(true).build());

Вопрос: Мне нужно знать, как предотвратить перезапуск камеры при просмотре камеры каждый раз, когда я приостанавливаю работу приложения, пока я нахожусь на странице «Хорошо, картинка», и возобновляю работу. Также, если я оставлю приложение бездействующим на этой странице на некоторое время, кажется, что он зависает, и моя камера не может быть запущена снова (из любого приложения камеры, включая приложение по умолчанию... мне нужно перезагрузить устройство). Я считаю, что это происходит потому, что я не выпустил камеру. Не могли бы вы указать мне, как я должен обрабатывать приостановку и возобновление работы приложения.


person Rohan    schedule 09.06.2015    source источник


Ответы (1)


Мне нужно знать, как предотвратить перезапуск камеры при просмотре камеры каждый раз, когда я приостанавливаю приложение, пока я нахожусь на странице «хорошо, картинка», и возобновляю

В демонстрационном приложении, если я переключаюсь в режим покадровой съемки, делаю пейзажный снимок с помощью задней камеры, нажимаю ДОМОЙ на экране предварительного просмотра фотографий, возвращаюсь в приложение из списка последних задач и нажимаю НАЗАД, все ведет себя нормально, по крайней мере, на Nexus 4, на котором я только что попробовал.

Следовательно, я бы посоветовал вам сравнить ваше приложение с демонстрационным приложением и посмотреть, в чем отличия, которые могут вызвать такое поведение.

Если вы считаете, что в библиотеке есть ошибка, не стесняйтесь сообщить о проблеме, но вам нужно будет предоставить мне полный набор материалов, чтобы воспроизвести проблему. Это будет включать сведения об устройстве (например, Build.PRODUCT), код для его воспроизведения (если это не одно из демонстрационных приложений) и шаги, которые я должен выполнить вручную, чтобы воспроизвести его.

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

Еще раз, я не могу воспроизвести это поведение. Сразу же после шагов, которые я описал выше, я сделал еще один снимок в режиме одиночного снимка и оставил приложение на экране предварительного просмотра фотографий, пока составлял первую часть этого ответа. Я просто нажал НАЗАД, и все в норме. Итак, еще раз:

  • Сравните свое приложение с демонстрационным приложением, чтобы увидеть, можете ли вы определить, что вы можете делать, что может вызвать этот эффект.

  • Сообщите о проблеме, если считаете, что это ошибка в библиотеке, но делайте это только, если вы можете дать мне инструкции по воспроизведению ошибки

person CommonsWare    schedule 09.06.2015
comment
Спасибо за быстрый ответ Марк. В моем приложении я не запускаю отдельное действие (отображение активности), чтобы показать предварительный просмотр. Я оставляю экран с щелкнутой картинкой (замороженный экран, то есть фрагмент DemoCamera остается), и я переключаю видимость набора элементов управления, таких как сохранение, отмена и создание следующего изображения. Теперь, когда я нажимаю кнопку «Домой» (с дефрагментацией, в настоящее время отображающей захваченное изображение), а затем возвращаюсь в приложение. Камера перезапустилась, хотя я все еще должен быть в состоянии захваченного изображения во фрагменте. - person Rohan; 09.06.2015
comment
В Snapchat, когда изображение захвачено, и вам показывают кучу опций/элементов управления на экране, и вы нажимаете домой, а затем возобновляете, захваченное состояние экрана камеры остается. Мне нужно добиться чего-то подобного. - person Rohan; 09.06.2015
comment
@Rohan: CameraView не предназначен для работы. Замена активности полностью работает, о чем свидетельствует демонстрационное приложение. Замена CameraFragment должна работать. Оставлять CameraFragment включенным и не запускать предварительный просмотр не поддерживается. Мне нужно добиться чего-то подобного -- тогда не пользуйтесь библиотекой, а работайте с android.hardware.Camera и android.hardware.camera2.* напрямую самостоятельно. Или переключитесь на другой фрагмент/активность и используйте захваченную фотографию в качестве фона для множества опций/элементов управления. - person CommonsWare; 09.06.2015