2011-11-12 11 views
0

メンバー変数 を持つアクティビティ付きビデオハングアウトアプリケーションを作成しました。Private CameraMediaSource mCameraMediaSource;Androidカメラの開閉

正常に動作しますが、しばらくしてからカメラが表示されなくなることがあります。その後、私はアプリ全体を殺すと、それは再び動作します。 onPause()、onResume()などのアクティビティライフサイクルメソッドでカメラを処理する方法については不明です。画像が画面上に止まると、カメラをクリアするにはどうすればいいですか?ありがとう

+0

あなたは本当にもっと答えを受け入れるべきです。私の経験では、提供されたものが美しく機能します。 – Greyson

答えて

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() 

デバイスがオフになった後、背中に、または私のアプリはそう行く渡っこれは私に適しています背景に。

また、カメラを離してしまう可能性のあるキャッチされていない例外には十分注意してください。そのため、カメラのハードウェアがロックアップし、アプリを強制終了して再起動してもカメラを開くことができなくなることがよくあります。その場合は、デバイスの電源を入れ直す必要があります。

+0

surfaceChangedとは何ですか? – Androider

+0

SurfaceChangedはSurfaceHolder.Callbackインターフェイスの一部です。サーフェスビューを描画する準備ができたときに通知するために使用されます。参照:http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html – mmeyer

関連する問題