// 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();
        }
예제 #6
0
        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));
                }
            }
        }