ZXing Barcode scanning(code128 format) is not working in Xamarin Forms

2k views Asked by At

We using the ZXING library to scan the barcodes for xamarin forms app and its working fine.

But now are having issue with barcode - code128 format as its not scanning the bar codes (content length - 19 char ). Attached barcode for reference.

enter image description here

We using Zxing version - 2.4.1(Latest stable).

We have used the below code but its not working for both Android & iOS platforms.

Kindly suggest/provide your inputs on resolving the issue.

 private void Btn_BarcodeClicked(object sender, EventArgs e)
    {
        try
        {
            var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
            options.PossibleFormats = new List<ZXing.BarcodeFormat>() {
                ZXing.BarcodeFormat.CODE_39,
                ZXing.BarcodeFormat.CODE_93,
                ZXing.BarcodeFormat.CODE_128,
                ZXing.BarcodeFormat.EAN_13,
                ZXing.BarcodeFormat.QR_CODE
            };
            options.TryHarder = false;
            options.BuildBarcodeReader().Options.AllowedLengths = new[] { 44 };

            var scanPage = new ZXingScannerPage(options);
            scanPage.DefaultOverlayTopText = "";
            scanPage.DefaultOverlayBottomText = "";
            scanPage.AutoFocus();
            ToolbarItem toolbarItem = new ToolbarItem();
            toolbarItem.Text = "Flash ON";
            toolbarItem.Clicked += (s, ex) =>
            {
                try
                {
                    toolbarItem.Text = "Flash " + (toolbarItem.Text == "Flash ON" ? "OFF" : "ON");
                    //if (scanPage.HasTorch)
                    scanPage.ToggleTorch();
                }
                catch (Exception exx)
                {
                }
            };
            scanPage.ToolbarItems.Add(toolbarItem);
            TimeSpan ts = new TimeSpan(0, 0, 0, 1, 0);
            Device.StartTimer(ts, () =>
            {
                if (scanPage.IsScanning)
                    scanPage.AutoFocus();
                return scanPage.IsScanning;
            });
            scanPage.OnScanResult += (result) =>
            {
                scanPage.IsScanning = false;
                Device.BeginInvokeOnMainThread(async () =>
                {
                    await DisplayAlert("Alert", result.Text, "Ok");
                });
            };
            Navigation.PushAsync(scanPage);
        }
        catch (Exception ex)
        {

        }
    }
0

There are 0 answers