private void Uninitialize() { StatusTextBlock.Text = ""; if (_mediaElement != null) { _mediaElement.Source = null; _mediaElement = null; } if (_cameraStreamSource != null) { _cameraStreamSource.FrameRateChanged -= CameraStreamSource_FPSChanged; _cameraStreamSource = null; } _cameraEffect = null; if (_photoCaptureDevice != null) { _photoCaptureDevice.Dispose(); _photoCaptureDevice = null; } }
private async void Initialize() { StatusTextBlock.Text = AppResources.MainPage_StatusTextBlock_StartingCamera; var resolution = PhotoCaptureDevice.GetAvailablePreviewResolutions(CameraSensorLocation.Back).Last(); _photoCaptureDevice = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, resolution); await _photoCaptureDevice.SetPreviewResolutionAsync(resolution); _cameraEffect = new NokiaImagingSDKEffects(); _cameraEffect.PhotoCaptureDevice = _photoCaptureDevice; _cameraStreamSource = new CameraStreamSource(_cameraEffect, resolution); _cameraStreamSource.FrameRateChanged += CameraStreamSource_FPSChanged; _mediaElement = new MediaElement(); _mediaElement.Stretch = Stretch.UniformToFill; _mediaElement.BufferingTime = new TimeSpan(0); _mediaElement.SetSource(_cameraStreamSource); // Using VideoBrush in XAML instead of MediaElement, because otherwise // CameraStreamSource.CloseMedia() does not seem to be called by the framework:/ BackgroundVideoBrush.SetSource(_mediaElement); _cameraEffect.PreviousEffect(); StatusTextBlock.Text = _cameraEffect.EffectName; }