嗯,我的问题很简单:
如何使用相机拍摄Windows Store App
Windows Phone 8.1
的照片?
MSDN上的示例使用Windows.Media.Capture.CameraCaptureUI
,该版本在Windows Phone上无法使用,或者用于Silverlight
。
我无法使用Windows Runtime找到专门针对Windows Phone应用的任何文档或示例
如果有人知道,或者甚至有这方面的文件,我会很高兴。
答案 0 :(得分:48)
在WP8.1运行时(也在Silverlight中),您可以使用MediaCapture。简而言之:
// First you will need to initialize MediaCapture
Windows.Media.Capture.MediaCapture takePhotoManager = new Windows.Media.Capture.MediaCapture();
await takePhotoManager.InitializeAsync();
如果您需要预览,可以使用CaptureElement:
// In XAML:
<CaptureElement x:Name="PhotoPreview"/>
然后在后面的代码中你可以像这样开始/停止预览:
// start previewing
PhotoPreview.Source = takePhotoManager;
await takePhotoManager.StartPreviewAsync();
// to stop it
await takePhotoManager.StopPreviewAsync();
最后拍摄照片时,您可以将其直接转到文件CapturePhotoToStorageFileAsync或流CapturePhotoToStreamAsync:
ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();
// a file to save a photo
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
"Photo.jpg", CreationCollisionOption.ReplaceExisting);
await takePhotoManager.CapturePhotoToStorageFileAsync(imgFormat, file);
如果您想拍摄视频,请here is more information。
另外,不要忘记在{1}}的清单文件中添加Webcam
,在Capabilities
中添加Front/Rear Camera
。
如果您需要选择相机(前/后),您需要获取相机ID,然后使用所需设置初始化Requirements
:
MediaCapture
答案 1 :(得分:3)
在通用Windows Phone 8.1(WinRT)应用程序中,不再可能直接跳入内置相机应用程序并在拍摄照片时接收回调。
为此,您必须如上所述实施Windows.Media.Capture.MediaCapture
。曾经有CameraCatureUI
但它在Windows Phone 8.1的WinRT应用程序中不可用。
但是有一种“解决方法”。您可以使用Windows.Storage.Pickers.FileOpenPicker
并将其配置为选择图像。现在选择器将有一个相机按钮。用户可以单击相机按钮,内置的相机应用程序将打开。用户拍完照片后,您会在应用中收到回电信息。 FileOpenPicker
回调实现起来有点烦人,但它确实有效。如果您可以接受可用性影响,那么这可能是一种有效的方法。
在2014年的微软建设大会期间,有一个关于这个主题的会议。You can watch the session online with this link.
答案 2 :(得分:0)
您可以在this链接上采用该方法。一切都得到了很好的解释。
只需使用PhotoCamera
课程,不要忘记在应用清单中启用相机使用