ZXing条形码扫描(code128格式)在Xamarin Forms中不起作用

时间:2018-11-08 12:49:14

标签: xamarin.forms zxing code128 zxing.net

我们使用ZXING库扫描xamarin表单应用程序的条形码及其正常工作。

但是现在有带有条形码-code128格式的问题,因为它不扫描条形码(内容长度-19个字符)。随附条形码以供参考。

enter image description here

我们使用的是Zxing版本-2.4.1(最新稳定版)。

我们使用了以下代码,但它不适用于Android和iOS平台。

请提供建议或提供有关解决问题的建议。

 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 个答案:

没有答案