如何暂停ZXing阅读,直到用户关闭Xamarin表单中的警报消息?



我正在实现ZXing条形码阅读器,因此当用户扫描错误的条形码时,会弹出警报消息,说这是错误的条形码。问题是,扫描程序会不断扫描警报消息后面,并不断弹出相同的警报。我希望扫描程序暂停,直到用户关闭警报消息。这是我的代码,顺便说一下,Zxing。正在分析=假;不工作

zxing = new ZXingScannerView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingScannerView",
};

zxing.OnScanResult += (result) =>
{
Device.BeginInvokeOnMainThread(async () =>
{
if (!result.Text.Equals(auftrag.code))
{
zxing.IsAnalyzing = false;
await DisplayAlert("Barcode nicht gefunden.", "Der Barcode gehört nicht zu dem gewählten Auftrag.", "OK");
}
else
await Navigation.PushAsync(new AuftragDescription(auftrag));
}
});
};

> 您可以通过添加名为 _isScanning 的布尔字段并将其设置为 true 来解决问题。当Zxing"触发"OnScanResult时,它将检查_isScanning是否为真,它将扫描和分析设置为false,它将执行您的工作检查代码或您想要的其他操作,完成后它将将分析和扫描设置为true,您将继续扫描其他条形码。

Zxing会一直扫描,但在您显示DisplyAlert时不会打断您。

希望这不会令人困惑,这是满足您需求的最简单方法。

这是代码:

// add this bool field in your class
private bool _isScanning = true;
// ... 
// your other code...
// ... 
zxing = new ZXingScannerView {
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingScannerView",
};

zxing.OnScanResult += (result) => {
Device.BeginInvokeOnMainThread(async() => {
if (_isScanning) {
_isScanning = false;
zxing.IsAnalyzing = false;
if (!result.Text.Equals(auftrag.code)) { 
await DisplayAlert("Barcode nicht gefunden.", "Der Barcode gehört nicht zu dem gewählten Auftrag.", "OK");
} else
await Navigation.PushAsync(new AuftragDescription(auftrag));
}
zxing.IsAnalyzing = true;
_isScanning = true;
}
});
};

最新更新