Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public sealed partial class Scanner2 : Page
- {
- private readonly MediaCapture _mediaCapture = new MediaCapture();
- private Result _result;
- public Scanner2()
- {
- InitializeComponent();
- }
- protected override async void OnNavigatedTo(NavigationEventArgs e)
- {
- try
- {
- var cameras = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
- if (cameras.Count < 1)
- {
- throw new NoCameraAvailableException();
- }
- MediaCaptureInitializationSettings settings;
- if (cameras.Count == 1)
- {
- settings = new MediaCaptureInitializationSettings {VideoDeviceId = cameras[0].Id};
- }
- else
- {
- DeviceInformation backWebcam = (from webcam in cameras
- where webcam.EnclosureLocation != null
- && webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back
- select webcam).FirstOrDefault();
- settings = new MediaCaptureInitializationSettings {VideoDeviceId = backWebcam.Id};
- }
- await _mediaCapture.InitializeAsync(settings);
- VideoCapture.Source = _mediaCapture;
- await _mediaCapture.StartPreviewAsync();
- var focusSetting = new FocusSettings
- {
- Mode = FocusMode.Continuous,
- AutoFocusRange = AutoFocusRange.Normal,
- DisableDriverFallback = false,
- WaitForFocus = true
- };
- _mediaCapture.VideoDeviceController.FocusControl.Configure(focusSetting);
- await _mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true);
- _mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
- _mediaCapture.VideoDeviceController.FlashControl.Enabled = false;
- while (_result == null)
- {
- using (var stream = new InMemoryRandomAccessStream())
- {
- await _mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), stream);
- stream.Seek(0);
- var writeableBitmap = new WriteableBitmap(1, 1);
- await writeableBitmap.SetSourceAsync(stream);
- _result = ScanBitmap(writeableBitmap);
- }
- }
- await _mediaCapture.StopPreviewAsync();
- VideoCapture.Visibility = Visibility.Collapsed;
- CaptureImage.Visibility = Visibility.Visible;
- Debug.WriteLine("Scanned text: {0}", _result.Text);
- Frame.GoBack();
- }
- catch (UnauthorizedAccessException ex)
- {
- }
- catch (NoCameraAvailableException ex)
- {
- }
- catch (Exception ex)
- {
- }
- }
- private Result ScanBitmap(WriteableBitmap writeableBmp)
- {
- var barcodeReader = new BarcodeReader
- {
- Options = new DecodingOptions
- {
- PossibleFormats = new[] { BarcodeFormat.QR_CODE },
- TryHarder = true
- },
- AutoRotate = true
- };
- var result = barcodeReader.Decode(writeableBmp);
- if (result != null)
- {
- CaptureImage.Source = writeableBmp;
- }
- return result;
- }
- protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e)
- {
- await _mediaCapture.StopPreviewAsync();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement