Android相机开启/关闭

时间:2011-11-12 01:34:13

标签: android

我编写了一个带有成员变量的Activity的视频通话应用程序  私人CameraMediaSource mCameraMediaSource;

工作正常但过了一段时间有时相机不再显示了。然后我杀死整个应用程序,它再次工作。不确定如何在onPause(),onResume()等活动生命周期方法中处理相机。是否需要释放cameera?当相机暂停屏幕上的图片时,如何清除相机。感谢

1 个答案:

答案 0 :(得分:3)

是的,相机应该被释放。最小化onDestroy但在OnPause中可能更安全。

相机使用的生命周期对我来说在1.6 - 3.x之间有效:

  onResume:
   - get a ref to camera with Camera.open();
   - sv = (SurfaceView)this.findViewById(R.id.capture_SurfaceView);
                mHolder = sv.getHolder(); 
                mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
                mHolder.setSizeFromLayout();
                mHolder.addCallback(this); 
  surfaceChanged:
    - Camera.setPreviewDisplayHolder()
    - Camera.startPreview()
  onPause:
    - Camera.stopPreview
    - SurfaceHolder.removeCallback()
    - Camera.release()

这对我来说非常适合我在设备关闭然后重新开启,或者我的应用程序否则将进入后台。

另外,请注意未捕获的异常,否则可能会导致您无法释放相机。这通常会导致相机硬件锁定,以至于杀死并重新启动您的应用程序仍然无法打开相机。如果发生这种情况,您需要重启设备。