Android-камера зависает после съемки одной фотографии - PullRequest
17 голосов
/ 26 мая 2011

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

У кого-нибудь есть решение?

Ответы [ 6 ]

58 голосов
/ 10 октября 2011

Я нашел решение для этого: после съемки изображения предварительный просмотр остановится. Чтобы сделать больше фотографий, сначала наберите camera.startPreview().

16 голосов
/ 07 июля 2015

после захвата изображения вы должны остановить предварительный просмотр и запустить его снова.

mCamera.stopPreview();
mCamera.startPreview();

это будет нормально работать.

3 голосов
/ 26 мая 2011

Любая обработка изображений в фоновом режиме AsyncTask. Это позволит вашему пользовательскому интерфейсу продолжить работу и сделать еще один снимок.

Редактировать: я не могу удалить принятый ответ, поэтому смотрите ответ Stoefin ниже. Позвонив по номеру camera.startPreview(), прежде чем сделать следующее фото, он работает.

1 голос
/ 06 января 2016

camera.startpreview (); в моем случае ответ не сработал, но приведенный ниже код решил эту проблему для меня и надеюсь, что это поможет и другим. Я использовал поток, чтобы отложить закрытие и открытие камеры после того, как снимок был сделан на 500 мс

 private void start_camera() {
     try {
         camera = Camera.open();
         // camera.lock();
     } catch (RuntimeException e) {
         Log.e(tag, "init_camera: " + e);
         return;
     }
     Camera.Parameters param = camera.getParameters();
     param = camera.getParameters();
     Camera.Size size = param.getSupportedPreviewSizes().get(0);
     param.setPreviewSize(size.width, size.height);
     camera.setParameters(param);
     try {
         camera.setPreviewDisplay(surfaceHolder);
         camera.startPreview();
         previewRunning = true;
     } catch (Exception e) {
         Log.e(tag, "init_camera: " + e);
         return;
     }}
 private void captureImage() {
     camera.takePicture(shutterCallback,null,jpegCallback);
     Thread restart_preview=new Thread(){public void run(){
         try {
             Thread.sleep(500);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }

         camera.release();
         camera=null;
         start_camera();
     }};
     restart_preview.start();}
0 голосов
/ 07 января 2015

Камера зависает, потому что вы не перезапускаете предварительный просмотр камеры, поэтому перезапустите ее, позвонив по номеру camera.startpreview()

0 голосов
/ 26 мая 2011

Вместо того, чтобы использовать действия, определенные существующим приложением камеры на вашем телефоне, вы можете написать свое собственное действие, которое напрямую использует API камеры для выполнения описанных вами функций.Класс Camera задокументирован здесь: http://developer.android.com/reference/android/hardware/Camera.html

...