// This method is called whenever objects are updated and it's the right place to react to the tracking results. public void OnSessionUpdated(BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData frameData) { DispatchQueue.MainQueue.DispatchAsync(() => { if (!this.barcodeTracking.Enabled) { return; } foreach (var identifier in session.RemovedTrackedBarcodes) { this.overlays.Remove(identifier); } var filteredTrackedCodes = session.TrackedBarcodes.Values.Where(code => code != null && code.Barcode != null && !string.IsNullOrEmpty(code.Barcode.Data)); foreach (var trackedCode in filteredTrackedCodes) { var success = this.overlays.TryGetValue(trackedCode.Identifier, out UIView overlay); if (!success) { return; } overlay.Hidden = this.ShouldHideOverlay(trackedCode, this.captureView.Frame.Width); } }); // Dispose the frame when you have finished processing it. If the frame is not properly disposed, // different issues could arise, e.g. a frozen, non-responsive, or "severely stuttering" video feed. frameData.Dispose(); }
public void OnSessionUpdated(BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData frameData) { lock (scanResults) { foreach (var trackedBarcode in session.AddedTrackedBarcodes.Where(trb => IsValidBarcode(trb.Barcode))) { scanResults.Add(new ScanResult(trackedBarcode.Barcode)); } } }
public void OnSessionUpdated(BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData frameData) { var products = session.TrackedBarcodes.Values .Select(trackedBarcode => trackedBarcode.Barcode) .Where(barcode => barcode.Data != null) .Select(barcode => Model.Product.Create(barcode.Data, barcode.Symbology.HumanReadableName())); if (this.Element?.BindingContext is MainViewModel viewModel) { viewModel.ScannedProducts = products.ToList(); } }
public void OnSessionUpdated(BarcodeTracking barcodeCapture, BarcodeTrackingSession session, IFrameData frameData) { lock (this.scanResults) { foreach (var trackedBarcode in session.AddedTrackedBarcodes) { this.scanResults.Add(new ScanResult { Data = trackedBarcode.Barcode.Data, Symbology = SymbologyDescription.Create(trackedBarcode.Barcode.Symbology).ReadableName }); } } }
public void OnSessionUpdated(BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData frameData) { DispatchQueue.MainQueue.DispatchAsync(() => { this.scanResults = session.TrackedBarcodes?.Values.Select(v => new ScanResult { Data = v.Barcode.Data, Symbology = v.Barcode.Symbology.ReadableName() }).ToHashSet(); }); // Dispose the frame when you have finished processing it. If the frame is not properly disposed, // different issues could arise, e.g. a frozen, non-responsive, or "severely stuttering" video feed. frameData.Dispose(); }
public void OnSessionUpdated(BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData frameData) { // This method is called whenever objects are updated and it's the right place to react to the tracking results. var products = session.TrackedBarcodes.Values .Select(trackedBarcode => trackedBarcode.Barcode) .Where(barcode => barcode.Data != null) .Select(barcode => Model.Product.Create(barcode.Data, barcode.Symbology.HumanReadableName())); if (this.Element?.BindingContext is MainViewModel viewModel) { viewModel.ScannedProducts = products.ToList(); } frameData.Dispose(); }
public void OnSessionUpdated( BarcodeTracking barcodeTracking, BarcodeTrackingSession session, IFrameData data) { if (this.IsFrozen() || this.listener == null) { return; } foreach (int identifier in session.RemovedTrackedBarcodes) { this.RemoveBubbleViewForIdentifierOnMainThread(identifier); } foreach (TrackedBarcode trackedBarcode in session.TrackedBarcodes.Values) { if (!string.IsNullOrEmpty(trackedBarcode.Barcode.Data)) { // We show or hide the bubble depending on its size compared to the device screen. this.SetBubbleVisibilityOnMainThread(trackedBarcode, this.listener.ShouldShowBubble(trackedBarcode)); } } }