Windows Phone 8.1相机初始化 – 访问被拒绝的例外
使用适用于Windows Phone的8.1 MediaCapture类。
宣布了“音频”和“网络摄像头”的function,其中90%是exception的原因。
Kicker是,它在WP模拟器中完美运行,但在实际设备上中断。
确切的例外是:
我已经添加了大量的检查,以确保我们没有重新初始化已经初始化的相机或尝试在初始化之前阅读等等(因为我认为问题是由引起的)所以它不太可能是那样的。
private async Task InitializeCameraAsync() { if (_isInitialized) { Debug.WriteLine("Skipping unnecessary initialization"); return; } Debug.WriteLine("Initializing camera media capture..."); _deviceCapture = new MediaCapture(); await _deviceCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = _cameraInfoCollection[_currentVideoDevice].Id, PhotoCaptureSource = PhotoCaptureSource.VideoPreview, AudioDeviceId = _microphoneInfoCollection[_currentAudioDevice].Id StreamingCaptureMode = StreamingCaptureMode.Video }); Debug.WriteLine("Initialized camera media capture!"); // For code completion only, unlikely to be relevant // Set up low-lag photo capture if (IsNotUsingInstantCapture) { Debug.WriteLine("Preparing low-lag photo capture"); var imageEncoding = ImageEncodingProperties.CreateJpeg(); imageEncoding.Width = PhotoCaptureWidth; imageEncoding.Height = PhotoCaptureHeight; _lowLagPhotoCapture = await _deviceCapture.PrepareLowLagPhotoCaptureAsync(imageEncoding); } _isInitialized = true; Debug.WriteLine("Initialized camera!"); }
然后_mediacapture被绑定到xaml CaptureElement的.source以显示预览。
这是Windows api的临时错误。 它是在2014年9月24日发布的Windows Phone 8.1更新中修复的。