12

デバイスのカメラを使用するアプリケーションがあります。

今は通常の流れでカメラをリリースするだけです。

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
    if(camera != null) {
        camera.stopPreview();
        camera.release();
    } 
} 

したがって、アプリケーションは予期しない方法でカメラ モードを終了します。つまり、強制終了 (原因OutOfMemoryError) - カメラがロックされます。そして、それを解放する唯一の方法は、デバイスを再起動することです.

アプリケーションが開始された後、次のようになります。 RuntimeException: Fail to connect to camera service

いずれにせよ、そのカメラがリリースされていることを確認するにはどうすればよいですか?

4

4 に答える 4

-3
private void stopPreviewAndFreeCamera() {

if (mCamera != null) {
    /*
      Call stopPreview() to stop updating the preview surface.
    */
    mCamera.stopPreview();

    /*
      Important: Call release() to release the camera for use by other applications. 
      Applications should release the camera immediately in onPause() (and re-open() it in
      onResume()).
    */
    mCamera.release();

    mCamera = null;
}}

このようにしてください。

于 2013-06-26T11:27:34.723 に答える