public async System.Threading.Tasks.Task StartCapturePreviewAsync() { try { Windows.Devices.Enumeration.Panel devicePanel = Windows.Devices.Enumeration.Panel.Back; var obj = Global.Current.LocalSettings.LoadData(conCameraPanel); if (obj != null && obj.ToString() == conCameraFront) { devicePanel = Windows.Devices.Enumeration.Panel.Front; this.captureElement.FlowDirection = Windows.UI.Xaml.FlowDirection.RightToLeft; } else { this.captureElement.FlowDirection = Windows.UI.Xaml.FlowDirection.LeftToRight; } if ((App.Current as App).mediaCapture == null) { await(App.Current as App).InitializeCapture(devicePanel); } if ((App.Current as App).isExternalCamera) { this.captureElement.FlowDirection = Windows.UI.Xaml.FlowDirection.RightToLeft; } Global.Current.LocalSettings.SaveData(conCameraPanel, devicePanel.ToString()); this.mediaCapture = (App.Current as App).mediaCapture; this.zoomControl = this.mediaCapture.VideoDeviceController.Zoom; if (this.zoomControl != null && this.zoomControl.Capabilities.Supported) { this.zoomSlider.Visibility = Windows.UI.Xaml.Visibility.Visible; this.zoomSlider.IsEnabled = true; this.zoomSlider.Maximum = this.zoomControl.Capabilities.Max; this.zoomSlider.Minimum = this.zoomControl.Capabilities.Min; this.zoomSlider.StepFrequency = this.zoomControl.Capabilities.Step; double value; var rev = this.zoomControl.TryGetValue(out value); if (rev) { this.zoomSlider.Value = value; } } else { this.zoomSlider.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } this.AppbarSwitchCamera.Visibility = (App.Current as App).isSupportFront?Visibility.Visible:Visibility.Collapsed; this.AppbarFlashAuto.Visibility = this.mediaCapture.VideoDeviceController.FlashControl.Supported ? Visibility.Visible : Visibility.Collapsed; this.captureElement.Source = this.mediaCapture; await this.mediaCapture.StartPreviewAsync(); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
private void SetDefaults(MediaDeviceControl control, bool useAuto = false) { if (control.Capabilities.Supported) { if (useAuto) { control.TrySetAuto(useAuto); } else { control.TrySetAuto(useAuto); control.TrySetValue(control.Capabilities.Default); } } }