Сканирование штрих-кода ZXing (формат code128) не работает в формах Xamarin
Мы используем библиотеку 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)
{
}
}