7

私は問題があります。プレビュー用にカメラを初期化し、別のアプリにフォーカスを合わせた後、アプリに戻ります。プレビューは黒で表示されます。続けて写真を撮ると、普段カメラを向けているところの写真が撮れます。

OnResume()オーバーライドで何か間違ったことをしていますか?相対コードは以下のとおりです。

public void ReleaseCamera()
    {
        if (myCamera != null)
        {
            myCamera.Release();
            myCamera = null;
        }
    }

protected override void OnPause()
    {
        base.OnPause();

        if (myButtonState == ButtonState.CameraActive)
            ReleaseCamera();
    }

protected override void OnResume()
    {
        base.OnResume();

        if (myButtonState == ButtonState.CameraActive)
            InitializeCamera();
    }

private void InitializeCamera()
    {
        SurfaceView mySurfaceView = FindViewById<SurfaceView>(Resource.Id.surfaceView1);

        myCamera = Android.Hardware.Camera.Open(cameraNumber);
        Android.Hardware.Camera.Parameters p = myCamera.GetParameters();

        myCamera.SetDisplayOrientation(90); // Portrait
        myCamera.SetPreviewDisplay(mySurfaceView.Holder);
        myCamera.StartPreview();
    }

ご協力ありがとうございました。:)

4

1 に答える 1

7

onResume()早く呼ばれます。この段階では、サーフェスホルダーの準備ができていません。onPostResume()アクティビティにハンドラーを導入したり、SurfaceHolder.Callback.surfaceChanged()イベントを処理したりすることができます。

于 2012-08-08T07:19:51.740 に答える