拍完一张照片后Android相机会冻结

时间:2011-05-26 13:38:36

标签: android camera photo

我正在做一个带摄像头的项目,在拍摄一张照相机冻结后你必须完成活动并再次回想起拍摄另一张照片,我怎样才能拍照片冻结1-2秒然后表面观看再次使用相机。同样的视频我正在使用媒体记录器,拍摄视频按停止视频保存和屏幕仍然活着,但我不能再拍视频我必须重新启动活动?

有人有解决方案吗?

6 个答案:

答案 0 :(得分:58)

我找到了一个解决方案:拍照后,预览显示将停止。要拍摄更多照片,请先再次致电camera.startPreview()

答案 1 :(得分:16)

捕获图像后,您应该停止预览并再次启动它。

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

它会正常工作。

答案 2 :(得分:3)

在后台AsyncTask进行任何图像处理。这将允许您的UI活动继续并拍摄另一张照片。

编辑:我无法删除已接受的答案,请参阅下面的stoefin答案。在拍下下一张照片之前致电camera.startPreview()为他效力。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您可以编写自己的活动,直接使用Camera API来完成您描述的功能,而不是使用手机上现有相机应用程序定义的活动。 Camera类在此处记录:http://developer.android.com/reference/android/hardware/Camera.html

答案 5 :(得分:0)

相机正在冻结,因为您没有重新启动相机的预览,因此请通过拨打camera.startpreview()

重新启动相机