2015-02-24 64 views
0

我正試圖在Windows 8上初始化攝像頭。我已啓用項目和我的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」我收到以下錯誤行:

Runtime-error JavaScript: Access Denied.

我有雙重檢查所需要的一切,甚至下載示例項目檢查代碼並測試相機,在該項目中一切正常。

在此先感謝。

回答

0

我發現了這個問題。

上述功能是在這個代碼塊:

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

    ready: function (element, options) { 

    } 
} 

的問題是:該準備回調是用於DOM元素,而不是爲了JavaScript,因此它仍然處理ASYNC代碼,和WinJS不能正確處理多個aSync進程。這就是爲什麼我得到「訪問被拒絕」。

現在來解決這個問題。您需要用timeout創建一個承諾,如下所示:

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

    function (error) { } 
); 

希望這有助於一些人!