我正在Visual Studio上为UWP,Android和IOS开发Xamarin Forms上的移动应用程序。
我目前正在我的计算机(Windows 10)和手机(也是Windows 10)上测试应用程序。
我正在使用Zxing MobileBarcodeScanner来扫描多个条形码。
当我按下后退按钮时,我会调用MobileBarcodeScanner.Cancel()。
它唯一能做的就是关闭相机。它没有废除MobileBarcodeScanner的用户界面,我没有找到任何解决方案。
任何人都可以帮助我或建议解决方案吗?
取消按钮和Flash按钮也不会显示在扫描仪UI中。
代码:
private void showScanner()
{
var scanner = new MobileBarcodeScanner(App.coreDispatcher)
{
UseCustomOverlay = false,
TopText = "Hold camera up to barcode to scan",
BottomText = "Barcode will automatically scan",
CancelButtonText = "Done",
FlashButtonText = "Flash"
}
var opt = new MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 3000 };
scanner.ScanContinuously(opt, HandleScanResult);
}
protected override bool OnBackButtonPressed()
{
scanner.Cancel();
}
private void HandleScanResult(ZXing.Result result)
{
string msg;
if (result != null && !string.IsNullOrEmpty(result.Text)) // Success
{
msg = result.Text;
}
else // Canceled
{
msg = "Scanning Canceled!";
}
}
答案 0 :(得分:0)
它唯一能做的就是关闭相机。它没有废除MobileBarcodeScanner的UI,我没有找到任何解决方案
您的代码段中存在问题。在showScanner()方法中,您已经定义了一个scanner
变量,但是在OnBackButtonPressed()方法中,看起来您使用了一个名为scanner
的全局变量。
也许以下方式应该是正确的:
MobileBarcodeScanner scanner;
private void showScanner(){
scanner = new MobileBarcodeScanner(App.coreDispatcher) //Here, remove var
{
......
}
}
protected override bool OnBackButtonPressed()
{
scanner.Cancel();
}
如果您已查看Xamarin.Forms sample
它使用ZXingScannerPage
托管您的布局并处理一些逻辑,包括Cancel和ToggleTorch等,请参阅here
取消按钮和Flash按钮也不会显示在扫描仪UI中。
请使用自定义叠加层,只需将MobileBarcodeScanner.UseCustomOverlay属性设置为true,然后检查here中的示例代码