2017-05-25 109 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选项时,我刚刚得到了同样的错误。