async private Task <PhotoCaptureDevice> InitCamera(CameraPreviewSettings settings, CameraSensorLocation loc) { PhotoCaptureDevice camera = await OpenCamera(settings.Width, settings.Height, loc); UInt32 iso = Helper.GetISO((UInt32)settings.ISO, loc); Nullable <UInt32> wb = Helper.GetWhiteBalance(settings.WhiteBalance, loc); CameraCapturePropertyRange focusRange = PhotoCaptureDevice.GetSupportedPropertyRange(loc, KnownCameraGeneralProperties.ManualFocusPosition); UInt32 focusDistance = settings.FocusDistance.Equals("min", StringComparison.OrdinalIgnoreCase) ? (UInt32)focusRange.Min : (UInt32)focusRange.Max; camera.SetProperty(KnownCameraPhotoProperties.ExposureCompensation, 0); camera.SetProperty(KnownCameraPhotoProperties.FlashMode, FlashState.Off); camera.SetProperty(KnownCameraPhotoProperties.FocusIlluminationMode, 0); if (wb.HasValue) { camera.SetProperty(KnownCameraPhotoProperties.WhiteBalancePreset, wb.Value); _waitForWb = true; Debug.WriteLine("Using WB value: {0}", wb.Value); } camera.SetProperty(KnownCameraPhotoProperties.Iso, iso); camera.SetProperty(KnownCameraGeneralProperties.ManualFocusPosition, focusDistance); Debug.WriteLine("Using ISO: {0}, Using Focus Distance: {1}", camera.GetProperty(KnownCameraPhotoProperties.Iso), camera.GetProperty(KnownCameraGeneralProperties.ManualFocusPosition)); return(camera); }
async public void TakePictures(CameraPreviewSettings settings) { ResetVariables(); _settings = settings; _photoDevice = await InitCamera(_settings, SENSOR_LOCATION); // Init buffer _frameBuffer = new byte[(int)_photoDevice.PreviewResolution.Width * (int)_photoDevice.PreviewResolution.Height * 2]; Debug.WriteLine("Capturing {0} frames...", _settings.Frames); await _photoDevice.FocusAsync(); _photoDevice.PreviewFrameAvailable += OnPreviewFrame; }