OnResume相机重新启动黑屏

时间:2012-08-08 07:04:55

标签: android xamarin.android onresume onpause xamarin

我有问题。初始化相机进行预览并将另一个应用程序聚焦后,然后返回我的应用程序:预览显示为黑色。如果我继续拍照,则会拍摄我正常指向相机的位置。

我是否在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();
    }

感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:7)

onResume()过早被调用。在此阶段,您没有准备好表面支架。您可以尝试在Activity中引入onPostResume()处理程序,和/或处理SurfaceHolder.Callback.surfaceChanged()事件。