2012-08-08 9 views
6

Ich habe ein Problem. Nachdem Sie die Kamera für eine Vorschau initialisiert und eine andere App in den Fokus gebracht haben, kehren Sie zurück zu meiner App: Die Vorschau wird schwarz angezeigt. Wenn ich weiterhin ein Foto mache, macht es ein Foto von dem, wo ich die Kamera normalerweise zeige.OnResume Kamera Reinit Black Screen

Mache ich etwas falsch bei der OnResume() - Überschreibung? Der folgende Code lautet:

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(); 
    } 

Vielen Dank für Ihre Hilfe. :)

Antwort

6

onResume() wird zu früh aufgerufen. Sie haben den Oberflächenhalter in diesem Stadium noch nicht bereit. Sie können versuchen, in Ihrer Aktivität den Handler onPostResume() einzuführen und/oder das Ereignis SurfaceHolder.Callback.surfaceChanged() zu behandeln.

+1

Vielen Dank, mit dem SurfaceHolder Callback funktionierte perfekt. :) – Ecnelis