public static async Task<ContinuousAutoFocus> StartAsync(FocusControl control) { var autoFocus = new ContinuousAutoFocus(control); AutoFocusRange range; if (control.SupportedFocusRanges.Contains(AutoFocusRange.FullRange)) { range = AutoFocusRange.FullRange; } else if (control.SupportedFocusRanges.Contains(AutoFocusRange.Normal)) { range = AutoFocusRange.Normal; } else { // Auto-focus disabled return autoFocus; } FocusMode mode; if (control.SupportedFocusModes.Contains(FocusMode.Continuous)) { mode = FocusMode.Continuous; } else if (control.SupportedFocusModes.Contains(FocusMode.Single)) { mode = FocusMode.Single; } else { // Auto-focus disabled return autoFocus; } if (mode == FocusMode.Continuous) { // True continuous auto-focus var settings = new FocusSettings() { AutoFocusRange = range, Mode = mode, WaitForFocus = false, DisableDriverFallback = false }; control.Configure(settings); await control.FocusAsync(); } else { // Simulated continuous auto-focus var settings = new FocusSettings() { AutoFocusRange = range, Mode = mode, WaitForFocus = true, DisableDriverFallback = false }; control.Configure(settings); var ignore = Task.Run(async () => { await autoFocus.DriveAutoFocusAsync(); }); } return autoFocus; }
public static async Task <ContinuousAutoFocus> StartAsync(FocusControl control) { var autoFocus = new ContinuousAutoFocus(control); AutoFocusRange range; if (control.SupportedFocusRanges.Contains(AutoFocusRange.FullRange)) { range = AutoFocusRange.FullRange; } else if (control.SupportedFocusRanges.Contains(AutoFocusRange.Normal)) { range = AutoFocusRange.Normal; } else { // Auto-focus disabled return(autoFocus); } FocusMode mode; if (control.SupportedFocusModes.Contains(FocusMode.Continuous)) { mode = FocusMode.Continuous; } else if (control.SupportedFocusModes.Contains(FocusMode.Single)) { mode = FocusMode.Single; } else { // Auto-focus disabled return(autoFocus); } if (mode == FocusMode.Continuous) { // True continuous auto-focus var settings = new FocusSettings() { AutoFocusRange = range, Mode = mode, WaitForFocus = false, DisableDriverFallback = false }; control.Configure(settings); await control.FocusAsync(); } else { // Simulated continuous auto-focus var settings = new FocusSettings() { AutoFocusRange = range, Mode = mode, WaitForFocus = true, DisableDriverFallback = false }; control.Configure(settings); var ignore = Task.Run(async() => { await autoFocus.DriveAutoFocusAsync(); }); } return(autoFocus); }
async void createCamera() { CaptureUse primaryUse = CaptureUse.Video; mediaCapture = new MediaCapture(); DeviceInformationCollection webcamList = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); DeviceInformation backWebcam = (from webcam in webcamList where webcam.EnclosureLocation != null && webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back select webcam).FirstOrDefault(); await mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = backWebcam.Id, AudioDeviceId = "", StreamingCaptureMode = StreamingCaptureMode.Video, PhotoCaptureSource = PhotoCaptureSource.VideoPreview }); mediaCapture.VideoDeviceController.PrimaryUse = primaryUse; mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees); mediaCapture.VideoDeviceController.FlashControl.Enabled = false; setEffects(); reader = new BarcodeReader { Options = new DecodingOptions { PossibleFormats = new BarcodeFormat[] { BarcodeFormat.QR_CODE }, TryHarder = true } }; captureElement.Source = mediaCapture; await mediaCapture.StartPreviewAsync(); focusControl = mediaCapture.VideoDeviceController.FocusControl; if (focusControl.Supported == true) { FocusSettings focusSetting = new FocusSettings() { AutoFocusRange = AutoFocusRange.FullRange, Mode = FocusMode.Auto, WaitForFocus = false, DisableDriverFallback = false }; focusControl.Configure(focusSetting); await mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true); //await focusControl.FocusAsync(); } // zoom if (this.mediaCapture.VideoDeviceController.ZoomControl.Supported) { sliderZoom.Minimum = this.mediaCapture.VideoDeviceController.ZoomControl.Min; sliderZoom.Maximum = this.mediaCapture.VideoDeviceController.ZoomControl.Max; sliderZoom.StepFrequency = this.mediaCapture.VideoDeviceController.ZoomControl.Step; } }