WP7 Mango中的相机捕捉

时间:2011-05-28 16:16:03

标签: windows-phone-7 camera

我最近将我的WP7应用程序升级为Mango,并且在使用相机时遇到了一些问题。下面的代码用于在7.0上工作,但在7.1中,完成的处理程序在对话框显示之前触发,因此我无法捕获结果。拍照后,手机会显示“正在恢复...”,这是以前从未做过的事情。

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

MSDN文档似乎显示了我的代码的变体,但我无法再获得相机捕获任务的结果。

1 个答案:

答案 0 :(得分:5)

假设您的样本来自单一方法,我不希望它在Mango之前工作过。

应创建CameraCaptureTask并在页面的构造函数中指定回调,以使其正常工作。
类似的东西:

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

这适用于7.0&amp; 7.1