コード例 #1
0
        public static void ScanContinuously(
            Activity activity,
            string message,
            string closeButtonTitle,
            QRCodeScanned onQrCodeScannedFunction,
            TaskCompletionSource <bool> taskCompletionSource,
            bool tryInverted)
        {
            BarcodeScanner.Initialize(activity.Application);

            var scanner     = new BarcodeScanner();
            var overlayView = new ScanQrOverlayView(activity);

            scanner.CustomOverlay = overlayView;
            overlayView.SetDescriptionText(message);
            overlayView.SetCloseButtonText(closeButtonTitle);
            var position = 0;

            bool isScanningContinouslyExecuting = false;

            scanner.ScanContinuously(new MobileBarcodeScanningOptions()
            {
                DelayBetweenContinuousScans = 3000,
                TryInverted = tryInverted
            },
                                     async result =>
            {
                if (isScanningContinouslyExecuting)
                {
                    return;
                }
                isScanningContinouslyExecuting = true;

                var scanQrUpdate = await onQrCodeScannedFunction.Invoke(position, result.Text);

                if (scanQrUpdate == null)
                {
                    return;
                }

                if (scanQrUpdate.WillCancel)
                {
                    taskCompletionSource.SetResult(true);
                    taskCompletionSource = null;
                    scanner.Cancel();
                    return;
                }

                overlayView.SetDescriptionText(scanQrUpdate.UpdateMessage);
                position++;

                isScanningContinouslyExecuting = false;
            });
        }
コード例 #2
0
        public static async Task <string> ScanQRCode(string message, string closeButtonTitle, Activity activity, bool tryInverted = false)
        {
            BarcodeScanner.Initialize(activity.Application);

            var scanner     = new BarcodeScanner();
            var overlayView = new ScanQrOverlayView(activity);

            scanner.CustomOverlay = overlayView;
            overlayView.SetDescriptionText(message);
            overlayView.SetCloseButtonText(closeButtonTitle);

            var options = MobileBarcodeScanningOptions.Default;

            options.TryInverted = tryInverted;
            var result = await scanner.Scan(options);

            return(result?.Text);
        }