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); } } }
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); }
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() });