Windows Phone 8.1 Javascript应用程序 - 使用相机

时间:2015-08-20 09:28:41

标签: javascript c# windows-phone-8

好吧,我有一个现有的HTML5应用程序,应该移植到Windows Phone 8.1。现有的应用程序需要一些本机访问权来发送邮件,向存储器写入/读取文件以及拍摄照片。

在我的解决方案中,我有一个Javascript Windows Phone 8.1应用程序和一个Windows Phone 8.1运行时组件。 我已经通过运行时组件管理了文件/电子邮件访问。 (Windows.ApplicationModel.*

我卡住了相机。目标是:

  • Javascript Call" takePicture(callback)"
  • 本地拍照(怎么样?!)
  • 将其保存到存储
  • 使用数据/文件执行回调

我还没有找到任何真正的方法。 我该怎么做?

到目前为止我尝试了什么:

public async void takePicture(PhotoSuccessCallback scb, PhotoErrorCallback ecb)
    {
        var x = new MediaCapture();
        var settings = new MediaCaptureInitializationSettings();
        settings.PhotoCaptureSource = PhotoCaptureSource.Photo;
        await x.InitializeAsync(settings);
        await x.StartPreviewAsync();
    }

此代码段在StartPreviewAsync()崩溃时失败/一般异常。为了清楚起见,我自己并不想这样做,必须有一个简单的解决方案,对吗?

如果我无法使用此代码,是否可以导航到其他视图来管理此代码?

我必须承认,我对所有这些事情感到很困惑。

感谢。

1 个答案:

答案 0 :(得分:0)

在开始预览之前,您需要将MediaCapture指定为可显示预览的控件的来源。

我相信JavaScript会有以下几点:

var previewVidTag = document.getElementById("cameraPreview");
var previewUrl = URL.createObjectURL(x);
previewVidTag.src = previewUrl;
previewVidTag.play();

previewVidTag.addEventListener("playing", function () {
    // preview has started
});

你的HTML应该是这样的:

<video id="cameraPreview" class="cameraPreview"></video>

我相信您应该能够引用Windows 10 CameraStarterKit SDK sample来帮助您入门。