2011-05-28 15 views
5

Recientemente actualicé mi aplicación WP7 a Mango y tengo algunos problemas con la cámara. El siguiente código solía funcionar en 7.0, pero en 7.1 el controlador completo se dispara antes de que el cuadro de diálogo se muestre, por lo que no puedo capturar el resultado. Después de tomar la foto, el teléfono muestra "Reanudar ..." que nunca solía hacer.Captura de cámara en WP7 Mango

var dlg = new CameraCaptureTask(); 
      dlg.Completed += (s, e) => 
      { 
       if (e.TaskResult == TaskResult.OK) { 
        BitmapImage bmp = new BitmapImage(); 
        bmp.SetSource(e.ChosenPhoto); 
        //var img = new Image(); 
        //img.Source = bmp; 

        string caption = string.Empty; 
        var inputDialog = new InputPrompt() 
        { 
         Title = "Caption", 
         Message = "Enter caption/description for snapshot", 
        }; 
        inputDialog.Completed += (ss, ee) => 
               { 
                if (ee.PopUpResult == PopUpResult.Ok) 
                { 
                 caption = ee.Result; 

                 var snap = SnapshotBLL.AddSnapshot(recipeId, bmp, caption); 
                 onComplete(null, new SnapshotEventArgs(snap)); 
                } 
               }; 
        inputDialog.Show(); 
       } 
      }; 
      dlg.Show(); 

La documentación de MSDN parecen mostrar una variación de mi código, pero ya no pueden obtener el resultado de la tarea de captura de la cámara.

+0

consigo el "Reanudación ..." pantalla cada vez que se produce una excepción no controlada. – axon

Respuesta

5

Asumiendo que su muestra proviene de un único método, no esperaría que haya funcionado antes de Mango.

Se debe crear CameraCaptureTask y la devolución de llamada se debe asignar en el constructor de la página para que funcione correctamente.
Algo así como:

public partial class MainPage : PhoneApplicationPage 
{ 
    private CameraCaptureTask cct = new CameraCaptureTask(); 

    public MainPage() 
    { 
     InitializeComponent(); 

     cct.Completed += new EventHandler<PhotoResult>(cct_Completed); 
    } 

    private void cct_Completed(object sender, PhotoResult e) 
    { 
     // Do whatever here 
    } 

    private void SomeEventHandler(object sender, RoutedEventArgs e) 
    { 
     cct.Show(); 
    } 
} 

Esto funciona tanto en 7,0 & 7.1

+0

Este código funciona en el emulador, pero no en mi teléfono (Nokia Lumia 800). La aplicación se implementa correctamente, pero el controlador de eventos cct_Completed() se dispara inmediatamente (aparentemente omitiendo la captura de la cámara por completo). – axon

+0

He encontrado mi problema: CameraCaptureTask fallará si su teléfono está conectado a su PC cuando ejecuta su aplicación. Es decir. Como la cámara está desactivada cuando está conectada a USB, debe tener su teléfono desconectado de USB para ejecutar CameraCaptureTask en su aplicación. – axon

Cuestiones relacionadas