什么时候拍照?

时间:2014-03-12 07:39:54

标签: c# events windows-phone-8 photo navigateuri

我正在制作一张拍摄照片的wp8-app,然后带你到下一个屏幕来决定你是否喜欢它。 目前的做法是:

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状态并且应用程序崩溃。

我的问题是:是否还有其他有用的事件可以确保所有工作都完成,而且我可以在不使用基于静态时间的值的情况下导航?

1 个答案:

答案 0 :(得分: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的应用中做到了这一点。检查这是否适合您。