Windows phone 7 WP7 Mango中的相机捕捉

Windows phone 7 WP7 Mango中的相机捕捉,windows-phone-7,camera,Windows Phone 7,Camera,我最近将我的WP7应用程序升级到了Mango,相机出现了一些问题。下面的代码过去用于7.0,但在7.1上,在显示对话框之前,已完成的处理程序会触发,因此我无法捕获结果。拍摄完照片后,手机会显示“Resuming…”,这是以前从未出现过的 var dlg = new CameraCaptureTask(); dlg.Completed += (s, e) => { if (e.TaskResult == Task

我最近将我的WP7应用程序升级到了Mango,相机出现了一些问题。下面的代码过去用于7.0,但在7.1上,在显示对话框之前,已完成的处理程序会触发,因此我无法捕获结果。拍摄完照片后,手机会显示“Resuming…”,这是以前从未出现过的

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文档似乎显示了我的代码的变化,但我无法再获得相机捕获任务的结果。

假设您的样本来自单一方法,我不希望它在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();
    }
}
public部分类主页:PhoneApplicationPage
{
私有CameraCaptureTask cct=新CameraCaptureTask();
公共主页()
{
初始化组件();
cct.Completed+=新事件处理程序(cct_Completed);
}
私有无效cct_已完成(对象发送方,照片结果e)
{
//在这里做什么都行
}
私有void SomeEventHandler(对象发送方,RoutedEventTargs e)
{
cct.Show();
}
}

这在7.0和7.1中都可以使用

这段代码在模拟器中可以使用,但在我的手机(诺基亚Lumia 800)上不能使用。应用程序部署正常,但cct_Completed()事件处理程序立即启动(似乎完全跳过了摄像头捕获)。我发现了我的问题:如果在运行应用程序时手机连接到电脑,CameraCaptureTask将失败。也就是说,由于摄像头在插入USB时处于禁用状态,您必须断开手机的USB连接才能在应用程序中运行CameraCaptureTask。每当引发未处理的异常时,我都会看到“Resuming…”屏幕。