导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何使用 Windows Phone 8 的相机拍摄任务

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

通过相机拍摄任务,用户能够从您的应用程序中使用内置“相机”应用程序拍摄照片。如果用户完成此任务,将会引发一个事件,并且事件处理程序将会在结果中收到一张照片。在 Windows Phone 8 上,如果用户接受通过相机拍摄任务获取的照片,照片将自动保存到手机的“本机照片”中。在以前的 Windows Phone 版本中,照片不会自动保存。

重要说明重要说明:

使用 CameraCaptureTask API 捕获的照片将始终复制到手机的“本机照片”中。如果客户已将其手机设置为自动上传,这些图片将被复制到 OneDrive,并且可能会与比应用的预期更广泛的用户共享。出于此原因,如果您的应用捕获了您明确表示不想要共享或上传的图片(例如,临时图像或包含私有信息的图像),请不要使用 CameraCaptureTask API。您应改为使用 PhotoCamera API 来实现您自己的相机 UI。有关创建相机应用的详细信息,请参见如何为 Windows Phone 8 创建基本相机应用

使用选择器,可以帮助您在 Windows Phone 平台中提供一致的用户体验。有关更多信息,请参见 Windows Phone 8 启动器和选择器

为相机拍摄任务分配的内存不计入总应用程序内存使用量。这有助于尽可能地减少应用程序用于拍摄照片的内存量,这在应用程序运行在低内存设备 上时尤为重要。有关更多信息,请参见开发面向低内存手机的 Windows Phone 8 应用

当使用模拟器测试相机拍摄任务时,在任务准备好拍摄照片时按 F7。

使用相机拍摄任务

  1. 将以下语句添加到您的代码中。

    using Microsoft.Phone.Tasks;
    
  2. 声明任务对象。它必须具有页面范围,因此应在页面中的构造函数之前声明它。

    CameraCaptureTask cameraCaptureTask;
    
  3. 将以下代码添加到您的页面构造函数中。此代码初始化任务对象,并标识要在用户完成任务后运行的方法。

    cameraCaptureTask = new CameraCaptureTask();
    cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
    
  4. 在应用程序中的所需位置(例如按钮单击事件中)添加以下代码。为了测试此过程,可以将该代码放置在页面构造函数中。以下是启动任务的代码。

    
    
    
    
    cameraCaptureTask.Show();
    
    
    
    
    
    
    
  5. 向页面中添加已完成事件处理程序的代码。此代码在用户完成任务后运行。结果是一个 PhotoResult 对象,该对象公开一个包含图像数据的流。有关使用照片图像流的信息,请参见 Windows Phone 8 的相机和照片

    void cameraCaptureTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            MessageBox.Show(e.ChosenPhoto.Length.ToString());
    
            //Code to display the photo on the page in an image control named myImage.
            //System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
            //bmp.SetSource(e.ChosenPhoto);
            //myImage.Source = bmp;
        }
    }
    

显示:
© 2014 Microsoft