我已經寫了一個視頻通話應用程序,其中的活動有成員變量 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