2011-05-26 121 views
17

我正在做一个相机项目,在拍摄一张照片后,相机冻结,您必须完成活动并再次调用以拍摄另一张照片,我如何才能将照片冻结为1 -2秒,然后再用表面视图再次拍摄相机。视频相同我正在使用媒体记录器,视频按停止视频保存和屏幕仍然活着,但我不能再次视频我不得不重新开始活动?拍摄一张照片后,Android相机冻结

有人有解决方案吗?

+1

抓获后能你展示一些代码plz? – PedroAGSantos 2011-05-26 13:43:11

+0

@subspider你使用星系来检查相机功能吗? – includeMe 2011-05-26 14:05:36

+0

这里同样的问题。 @dsc是啊我正在使用银河s – stoefln 2011-10-10 14:57:40

回答

3

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

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

+3

这不是为什么相机冻结 - stoefln的答案是正确的;预览需要重新启动。 – elijah 2012-01-31 00:32:12

56

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

+0

这是正确的答案。谢谢!! – elijah 2012-01-31 00:31:20

+1

刚开始预览并不适合我。但是,如下面的答案中所述,停止和启动预览工作正常。 – shshnk 2015-10-29 11:18:05

+0

嘿,即使我先调用'startPreview()',相机也无法打开。如果你帮助我,我会非常感激! https://stackoverflow.com/questions/47483990/can-only-open-camera-once – 2017-11-25 17:05:58

0

相机被冻结,因为你没有重新启动相机的预览,因此通过捕捉图像,你应该停止预览并再次启动它后调用camera.startpreview()

15

重新启动它。

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

它会正常工作。

+0

即使我这样做,相机无法打开。如果你帮助我,我会非常感激! https://stackoverflow.com/questions/47483990/can-only-open-camera-once – 2017-11-25 17:06:14

1

camera.startpreview();答案没有对我的情况下工作,但下面的代码解决了这个问题对我来说,希望能够帮助别人too.I使用一个线程来延迟关闭和相机的开启相片是由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();} 
相关问题