Пример #1
0
        private bool InitScanner(BarcodeScanner.BarcodeFormat barcodeType)
        {
            device = AVCaptureDevice.GetDefaultDevice(AVMediaType.Video);
            if (device == null)
            {
                return(false);
            }

            input = AVCaptureDeviceInput.FromDevice(device);
            if (input.Device.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus))
            {
                input.Device.LockForConfiguration(out NSError err);
                input.Device.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus;
                input.Device.UnlockForConfiguration();
            }

            if (input == null)
            {
                return(false);
            }

            output = new AVCaptureMetadataOutput();
            output.SetDelegate(this, DispatchQueue.MainQueue);

            session = new AVCaptureSession();
            session.AddInput(input);
            session.AddOutput(output);
            output.MetadataObjectTypes = GetBarcodeFormat(barcodeType);

            captureVideoPreviewLayer              = AVCaptureVideoPreviewLayer.FromSession(session);
            captureVideoPreviewLayer.Frame        = CGRect.Empty;
            captureVideoPreviewLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill;
            captureVideoPreviewLayer.Connection.VideoOrientation = GetDeviceOrientation();
            return(true);
        }
Пример #2
0
        private AVMetadataObjectType GetBarcodeFormat(BarcodeScanner.BarcodeFormat barcodeType)
        {
            switch (barcodeType)
            {
            case BarcodeScanner.BarcodeFormat.DataMatrix:
                return(AVMetadataObjectType.DataMatrixCode);

            case BarcodeScanner.BarcodeFormat.QrCode:
                return(AVMetadataObjectType.QRCode);

            case BarcodeScanner.BarcodeFormat.Pdf417:
                return(AVMetadataObjectType.PDF417Code);

            case BarcodeScanner.BarcodeFormat.Code128:
                return(AVMetadataObjectType.Code128Code);

            case BarcodeScanner.BarcodeFormat.Code39:
                return(AVMetadataObjectType.Code39Code);

            case BarcodeScanner.BarcodeFormat.Code93:
                return(AVMetadataObjectType.Code93Code);

            case BarcodeScanner.BarcodeFormat.Ean13:
                return(AVMetadataObjectType.EAN13Code);

            case BarcodeScanner.BarcodeFormat.Ean8:
                return(AVMetadataObjectType.EAN8Code);

            default:
                return(AVMetadataObjectType.DataMatrixCode);
            }
        }
Пример #3
0
        private BarcodeFormat GetBarcodeFormat(BarcodeScanner.BarcodeFormat barcodeType)
        {
            switch (barcodeType)
            {
            case BarcodeScanner.BarcodeFormat.DataMatrix:
                return(BarcodeFormat.DataMatrix);

            case BarcodeScanner.BarcodeFormat.QrCode:
                return(BarcodeFormat.QrCode);

            case BarcodeScanner.BarcodeFormat.Pdf417:
                return(BarcodeFormat.Pdf417);

            case BarcodeScanner.BarcodeFormat.Code128:
                return(BarcodeFormat.Code128);

            case BarcodeScanner.BarcodeFormat.Code39:
                return(BarcodeFormat.Code39);

            case BarcodeScanner.BarcodeFormat.Code93:
                return(BarcodeFormat.Code93);

            case BarcodeScanner.BarcodeFormat.Ean13:
                return(BarcodeFormat.Ean13);

            case BarcodeScanner.BarcodeFormat.Ean8:
                return(BarcodeFormat.Ean8);

            default:
                return(BarcodeFormat.DataMatrix);
            }
        }