我们使用 ZXING 库来扫描 xamarin 表单应用程序的条形码,并且工作正常。
但现在条形码-code128 格式存在问题,因为它不扫描条形码(内容长度 - 19 个字符)。附上条码供参考。
我们使用 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)
{
}
}