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()在 Activity 中引入处理程序,和/或处理SurfaceHolder.Callback.surfaceChanged()事件。

于 2012-08-08T07:19:51.740 回答