public void ReceiveDetections(Detector.Detections detections)
            {
                var qrcodes = detections.DetectedItems;

                if (qrcodes.Size() != 0)
                {
                    if (Configuration.IsScanning)
                    {
                        Configuration.IsScanning = false;
                        if (_vibrationOnDetected)
                        {
                            Vibrator vib = (Vibrator)_context.GetSystemService(Context.VibratorService);
                            vib.Vibrate(200);
                        }
                        List <BarcodeResult> barcodeResults = new List <BarcodeResult>();
                        for (int i = 0; i < qrcodes.Size(); i++)
                        {
                            Barcode barcode = qrcodes.ValueAt(i) as Barcode;
                            if (barcode == null)
                            {
                                continue;
                            }
                            var type  = Methods.ConvertBarcodeResultTypes(barcode.ValueFormat);
                            var value = barcode.DisplayValue;
                            barcodeResults.Add(new BarcodeResult
                            {
                                BarcodeType  = type,
                                DisplayValue = value
                            });
                        }
                        OnDetected?.Invoke(barcodeResults);
                    }
                }
            }
Beispiel #2
0
        public static async Task <List <BarcodeResult> > ScanFromImage(byte[] imageArray)
        {
            UIImage               image           = new UIImage(NSData.FromArray(imageArray));
            var                   visionImage     = new VisionImage(image);
            VisionImageMetadata   metadata        = new VisionImageMetadata();
            VisionApi             vision          = VisionApi.Create();
            VisionBarcodeDetector barcodeDetector = vision.GetBarcodeDetector(Configuration.BarcodeDetectorSupportFormat);

            VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(visionImage);

            if (barcodes == null || barcodes.Length == 0)
            {
                return(new List <BarcodeResult>());
            }

            List <BarcodeResult> resultList = new List <BarcodeResult>();

            foreach (var barcode in barcodes)
            {
                resultList.Add(new BarcodeResult
                {
                    BarcodeType  = Methods.ConvertBarcodeResultTypes(barcode.ValueType),
                    DisplayValue = barcode.DisplayValue,
                    RawValue     = barcode.RawValue
                });
            }
            return(resultList);
        }
            private async void DetectBarcodeActionAsync(VisionImage image)
            {
                if (Configuration.IsScanning)
                {
                    try
                    {
                        VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(image);

                        if (barcodes == null || barcodes.Length == 0)
                        {
                            return;
                        }
                        Console.WriteLine($"Successfully read barcode");
                        Configuration.IsScanning = false;
                        if (_vibrationOnDetected)
                        {
                            SystemSound.Vibrate.PlayAlertSound();
                        }
                        List <BarcodeResult> resultList = new List <BarcodeResult>();

                        foreach (var barcode in barcodes)
                        {
                            var points = barcode.CornerPoints.ToList().ConvertAll(nsvalue => nsvalue.PointFValue);

                            resultList.Add(new BarcodeResult
                            {
                                BarcodeType  = Methods.ConvertBarcodeResultTypes(barcode.ValueType),
                                DisplayValue = barcode.DisplayValue,
                                Points       = points.Select(p => (p.X / (double)Width, p.Y / (double)Height)).ToList()
                            });
                        }
                        OnDetected?.Invoke(resultList);
                    }
            private async void DetectBarcodeActionAsync(VisionImage image)
            {
                if (Configuration.IsScanning)
                {
                    try
                    {
                        VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(image);

                        if (barcodes == null || barcodes.Length == 0)
                        {
                            return;
                        }
                        Console.WriteLine($"Successfully read barcode");
                        Configuration.IsScanning = false;
                        if (_vibrationOnDetected)
                        {
                            SystemSound.Vibrate.PlayAlertSound();
                        }
                        List <BarcodeResult> resultList = new List <BarcodeResult>();
                        foreach (var barcode in barcodes)
                        {
                            resultList.Add(new BarcodeResult
                            {
                                BarcodeType  = Methods.ConvertBarcodeResultTypes(barcode.ValueType),
                                DisplayValue = barcode.DisplayValue
                            });
                        }
                        OnDetected?.Invoke(resultList);
                    }
                    catch (Exception exception)
                    {
                        System.Diagnostics.Debug.WriteLine(exception.Message);
                    }
                }
            }
            public void ReceiveDetections(Detector.Detections detections)
            {
                var qrcodes = detections.DetectedItems;

                if (qrcodes.Size() != 0)
                {
                    if (Configuration.IsScanning)
                    {
                        Configuration.IsScanning = false;
                        if (_vibrationOnDetected)
                        {
                            Vibrator vib = (Vibrator)_context.GetSystemService(Context.VibratorService);
                            vib.Vibrate(200);
                        }
                        List <BarcodeResult> barcodeResults = new List <BarcodeResult>();
                        for (int i = 0; i < qrcodes.Size(); i++)
                        {
                            Barcode barcode = qrcodes.ValueAt(i) as Barcode;
                            if (barcode == null)
                            {
                                continue;
                            }
                            var type  = Methods.ConvertBarcodeResultTypes(barcode.ValueFormat);
                            var value = barcode.DisplayValue;
                            barcodeResults.Add(new BarcodeResult
                            {
                                BarcodeType  = type,
                                DisplayValue = value,
                                Points       = barcode.CornerPoints.Select(p => (p.X / (double)detections.FrameMetadata.Width, p.Y / (double)detections.FrameMetadata.Height)).ToList()
                            });
        public static async Task <List <BarcodeResult> > ScanFromImage(byte[] imageArray)
        {
            BarcodeDetector detector = new BarcodeDetector.Builder(Android.App.Application.Context)
                                       .SetBarcodeFormats(Configuration.BarcodeFormats)
                                       .Build();
            Bitmap bitmap = BitmapFactory.DecodeByteArray(imageArray, 0, imageArray.Length);

            Android.Gms.Vision.Frame frame      = new Android.Gms.Vision.Frame.Builder().SetBitmap(bitmap).Build();
            SparseArray          qrcodes        = detector.Detect(frame);
            List <BarcodeResult> barcodeResults = new List <BarcodeResult>();

            for (int i = 0; i < qrcodes.Size(); i++)
            {
                Barcode barcode  = qrcodes.ValueAt(i) as Barcode;
                var     type     = Methods.ConvertBarcodeResultTypes(barcode.ValueFormat);
                var     value    = barcode.DisplayValue;
                var     rawValue = barcode.RawValue;
                barcodeResults.Add(new BarcodeResult
                {
                    BarcodeType  = type,
                    DisplayValue = value,
                    RawValue     = rawValue
                });
            }
            return(barcodeResults);
        }
Beispiel #7
0
        public static async Task <List <BarcodeResult> > ScanFromImage(byte[] imageArray)
        {
            UIImage               image           = new UIImage(NSData.FromArray(imageArray));
            var                   visionImage     = new VisionImage(image);
            VisionImageMetadata   metadata        = new VisionImageMetadata();
            VisionApi             vision          = VisionApi.Create();
            VisionBarcodeDetector barcodeDetector = vision.GetBarcodeDetector(Configuration.BarcodeDetectorSupportFormat);

            VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(visionImage);

            if (barcodes == null || barcodes.Length == 0)
            {
                return(new List <BarcodeResult>());
            }

            List <BarcodeResult> resultList = new List <BarcodeResult>();

            foreach (var barcode in barcodes)
            {
                var points = barcode.CornerPoints.ToList().ConvertAll(nsvalue => nsvalue.PointFValue);
                resultList.Add(new BarcodeResult
                {
                    BarcodeType  = Methods.ConvertBarcodeResultTypes(barcode.ValueType),
                    DisplayValue = barcode.DisplayValue,
                    Points       = points.Select(p => (p.X / (double)image.Size.Width, p.Y / (double)image.Size.Height)).ToList()
                });