我已经写了一个视频通话应用程序,其中的活动有成员变量 private CameraMediaSource mCameraMediaSource;Android摄像头开启/关闭
工作正常,但过了一段时间有时相机不再显示。然后我杀了整个应用程序,它再次运作。不知道如何在onPause(),onResume()等活动生命周期方法中处理相机。是否需要释放某些时间点的cameera?当画面停留在屏幕上时,如何清除相机。谢谢
我已经写了一个视频通话应用程序,其中的活动有成员变量 private CameraMediaSource mCameraMediaSource;Android摄像头开启/关闭
工作正常,但过了一段时间有时相机不再显示。然后我杀了整个应用程序,它再次运作。不知道如何在onPause(),onResume()等活动生命周期方法中处理相机。是否需要释放某些时间点的cameera?当画面停留在屏幕上时,如何清除相机。谢谢
是的,相机应该被释放。在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()
这很适合我整个设备入门关闭,然后再打开,或我的应用程序,否则会背景。
另外,请注意未捕获的异常,这可能会导致您无法释放相机。这通常会导致相机硬件锁定,以致杀死并重新启动应用程序仍然无法打开相机。如果发生这种情况,您需要关闭设备电源。
你应该真的接受更多的答案;提供的那个在我的经验中运作得非常好。 – Greyson