Камера Android зависает после съемки одной фотографии

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

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

6 ответов


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

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


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


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

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

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


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

 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();}

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


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