2014-03-12 235 views
0

我正在開發一個wp8應用程序,它會拍攝一張照片,然後將您帶到下一個屏幕以決定是否喜歡它。 目前的方法是這樣的:何時拍攝照片?

private void ShutterButton_Click(object sender, RoutedEventArgs e) 
{ 
    if (cam != null) 
    { 
     try 
     { 
      cam.CaptureImage(); 

      await Task.Delay(1500); 
      NavigateFront(); 
     } 
     catch (Exception ex) 
     { 
      ... 
     } 
    } 
} 

public void NavigateFront() 
{ 
    string naviString = "/confirmPicture.xaml?parameter=" + fileName.ToString(); 
    _rootFrame.Navigate(new Uri(naviString, UriKind.Relative)); 
} 

在我的Lumia 520有時墜毀。如果我將等待時間增加到2.5秒,它就會起作用。但當然,這不應該是這樣做的方式。

如果我趕上了void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)-事件並嘗試瀏覽完所有內容並關閉所有流後,我仍然處於NavigateFailed-狀態並且應用程序崩潰。

我的問題是:是否有任何其他有用的事件,確保所有的工作都完成了,我可以導航而無需使用基於靜態時間的值?

+0

使用CameraCaptureTask拍照,它有一個完整的事件。 'http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006%28v=vs.105%29.aspx' – Jaihind

+0

@Jaihind從鏈接末尾刪除' – szpic

+0

Follow http:// msdn .microsoft.com/en-us/library/windowsphone/develop/hh394006%28v = vs.105%29.aspx – Jaihind

回答

1

導航與PhotoCamera是可能的,只是認購其CaptureCompleted事件處理

cam.CaptureCompleted += new EventHandler<CameraOperationCompletedEventArgs>(camera_CaptureCompleted); 

,這將是該事件

void camera_CaptureCompleted(object sender, CameraOperationCompletedEventArgs e) 
    { 
     try 
     { 
      Deployment.Current.Dispatcher.BeginInvoke(delegate() 
      { 
       try 
       { 
        cam.Dispose(); 
        NavigationService.Navigate(new Uri("URI nething", UriKind.Relative)); 
       } 
       catch (Exception) 
       { 

        MessageBox.Show("Problem occured!!"); 
       } 

      }); 
     } 
     catch 
     { 
      MessageBox.Show("Problem in camer_capturecompleted"); 
     } 
    } 

我做到了我的應用程序針對Windows Phone 7的一。檢查它是否也適用於你。

+0

哈哈,謝謝! 我使用了'cam_CaptureImageAvailable',因爲在msdn上它說它和'cam_CaptureCompleted'一樣等待圖像。不,我使用帶有圖像的人來存儲它,並完成導航捕獲。沒有計時器。謝謝! :) – ecth