OnResume Камера Reinit Черный Экран

У меня проблема. После инициализации камеры для предварительного просмотра и фокусировки другого приложения, а затем обратно в мое приложение: предварительный просмотр отображается черным. Если я продолжаю снимать, он делает снимок того, куда я обычно направляю камеру.

Я делаю что-то неправильно в переопределении 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 ответов


onResume() вызывается слишком рано. На данном этапе держатель поверхности не готов. Вы можете попробовать ввести onPostResume() обработчик в вашей деятельности, и/или обработки SurfaceHolder.Callback.surfaceChanged() событие.