2011-04-01 13 views
6

Quiero usar CameraCaptureTask en WP7 para obtener una imagen del teléfono y manipularla. Mi código es:CameraCaptureTask en WP7

CameraCaptureTask cameraCaptureTask; 
    public MainPage() 
    { 
     InitializeComponent(); 

     try 
     { 
      cameraCaptureTask = new CameraCaptureTask(); 
      cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed); 

     } 
     catch (System.InvalidOperationException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 

     try 
     { 
      cameraCaptureTask.Show(); 

     } 
     catch (System.InvalidOperationException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 

    void cameraCaptureTask_Completed(object sender, PhotoResult e) 
    { 
     MessageBox.Show("event: " + e.TaskResult.ToString()); 
     if (e.TaskResult == TaskResult.OK) 
     {     
      BitmapImage bmp = new BitmapImage(); 
      bmp.SetSource(e.ChosenPhoto); 
      image1.Source = bmp; 
     } 
    } 

} 

El problema es que cada vez que haga clic en el botón 1, se produce el evento, pero el valor es TaskResult.Cancel instad de OK. Además, en el teléfono no se muestra la cámara.

¿Alguna idea? Gracias

+0

posible duplicado de [Windows Phone 7 - CameraTask que no trabaja] (http://stackoverflow.com/questions/4891115/windows-phone-7 -cameratask-not-working) –

Respuesta

14

¿Está ejecutando con el depurador conectado? De ser así, la cámara no funcionará cuando se conecte al dispositivo usando el software Zune.

Si se conecta utilizando la herramienta WPConnect, debería funcionar.

+0

Sí, el problema fue ese. Estaba conectado al dispositivo usando Zune. – user422688

+0

Esto es genial, no sé por qué Microsoft eliminó la documentación. –

0

Pruebe esto.

void ctask_Completed(object sender, PhotoResult e) 
{ 

    if (e.TaskResult == TaskResult.OK && e.ChosenPhoto != null) 
    { 

     //Take JPEG stream and decode into a WriteableBitmap object 
     App.CapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto); 


     //Collapse visibility on the progress bar once writeable bitmap is visible. 
     progressBar1.Visibility = Visibility.Collapsed; 


     //Populate image control with WriteableBitmap object. 
     ImageMain.Source = App.CapturedImage; 
    } 

} 
1

Puede probar este ...

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      cameraCaptureTask = new CameraCaptureTask(); 
      cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed); 
      cameraCaptureTask.Show(); 
     } 
     catch (System.InvalidOperationException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
    void cameraCaptureTask_Completed(object sender, PhotoResult e) 
    { 
     MessageBox.Show("event: " + e.TaskResult.ToString()); 
     if (e.TaskResult == TaskResult.OK) 
     {     
      BitmapImage bmp = new BitmapImage(); 
      bmp.SetSource(e.ChosenPhoto); 
      image1.Source = bmp; 
     } 
    }