2017-05-25 25 views
0

我被棱鏡應用工作的攝像頭,MVVM和使用這種方法來顯示CaptureElement組件預覽StartPreviewAsync與CaptureElement在MVVM UWP

private async Task StartPreviewAsync(string deviceId) 
     { 
      try 
      { 
       _mediaCapture = new MediaCapture(); 
       MediaCaptureInitializationSettings setting = new MediaCaptureInitializationSettings(); 
       setting.VideoDeviceId = deviceId; 
       await _mediaCapture.InitializeAsync(setting); 
       //_displayRequest.RequestActive(); 
       //DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape; 
       CaptureElementSource = _mediaCapture; 
       //This line throw exception 
       await _mediaCapture.StartPreviewAsync(); 
      } 
      catch (UnauthorizedAccessException) 
      { 
       Debug.WriteLine("The app was denied access to the camera"); 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine("MediaCapture initialization failed. {0}", ex.Message); 
      } 
     } 

這是我CaptureElement.Source道具:

public MediaCapture CaptureElementSource 
     { 
      get { return _captureElementSouce; } 
      set { SetProperty(ref _captureElementSouce, value); } 
     } 

而且我得到這個異常:

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 
    at Mateo.UILogic.ViewModels.CameraSelectionPageViewModel.<StartPreviewAsync>d__111.MoveNext() 

請求的操作發生意外錯誤。預覽 接收器沒有設置

任何人,請在這幫助我。

+0

只是好奇,爲什麼你把'MediaCapture'放到你的視圖模型中?我不認爲'MediaCapture'屬於視圖模型。 – Scavenger

+0

@ Scavenger我嘗試了各種方式,但MediaCapture只是在Dispatcher中運行,它只存在於代碼後面。所以我在代碼背後寫了我的代碼。 :D就像你說的,mediacapture不屬於VM –

回答

0

當我忘記檢查Package.appxManifst - > Capabilities部分中的WebCam和Microphone選項時,我剛剛得到了同樣的錯誤。