質問: Androidのカメラの開閉 メンバー変数を持つアクティビティ付きのビデオハングアウトアプリケーションを作成しました プライベートCameraMediaSource mCameraMediaSource; うまく動作しますが、しばらく後にカメラがもう表示されません。その後、私はアプリ全体を殺すと、それは再び動作します。 onPause()、onResume()などのアクティビティライフサイクルメソッドでカメラを処理する方法については不明です。画像が画面上に止まると、カメラをクリアするにはどうすればいいですか?ありがとう
回答: はい、カメラを解放する必要があります。 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() ``` これは、デバイスの電源を切ってからもう一度やり直す、または私のアプリがバックグラウンドになっている間、私のためにうまくいきます。 また、カメラを離してしまう可能性のある捕捉されていない例外については、十分に注意してください。そのため、カメラのハードウェアがロックアップし、アプリを強制終了して再起動してもカメラを開くことができなくなることがよくあります。その場合は、デバイスの電源を入れ直す必要があります。