如何在Windows 8中正确初始化相机?

时间:2015-02-24 13:01:21

标签: javascript windows camera winjs

我正在尝试在Windows 8上初始化相机。我已在项目和Windows 8设备上启用了网络摄像头功能。

这是我的代码:

var dialog = new Windows.Media.Capture.CameraCaptureUI();
var aspectRatio = { width: 1, height: 1 };

dialog.photoSettings.croppedAspectRatio = aspectRatio;
dialog.captureFileAsync(Windows.Media.Capture.CameraCaptureUIMode.photo).done(function (file) {
    if (file) {
        editPreviewPicture(file);
        mainApp.pictureAccept('control');
    } else {

    }
}, function (e) {
    console.log("Error while opening camera: ", e);
});

在'captureFileAsync'的行上,我收到以下错误:

  

运行时错误JavaScript:访问被拒绝。

我已经仔细检查了所需的一切,甚至下载了示例项目以检查代码并测试相机,一切都在该项目中正常工作。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题。

上面的函数在这个代码块中:

WinJS.UI.Pages.define("/pages/queue/view.html", {

    ready: function (element, options) {

    }
}

问题是:就绪回调是针对DOM元素而不是针对javascript,因此它仍在处理aSync代码,而WinJS无法正确处理多个aSync进程。这就是我获得“拒绝访问”的原因。

现在解决这个问题。您需要使用timeOut创建一个promise,如下所示:

WinJS.Promise.timeout(500).then(
    function (complete) {
        // Camera initialization / Other aSync code here
    },

    function (error) { }
 );

希望这可以帮助一些人!