StartPreviewAsync与CaptureElement在MVVM UWP
问题描述:
我被棱镜应用工作的摄像头,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()
请求的操作发生意外错误。预览 接收器没有设置
任何人,请在这帮助我。
答
当我忘记检查Package.appxManifst - > Capabilities部分中的WebCam和Microphone选项时,我刚刚得到了同样的错误。
只是好奇,为什么你把'MediaCapture'放到你的视图模型中?我不认为'MediaCapture'属于视图模型。 – Scavenger
@ Scavenger我尝试了各种方式,但MediaCapture只是在Dispatcher中运行,它只存在于代码后面。所以我在代码背后写了我的代码。 :D就像你说的,mediacapture不属于VM –