ZXing.Mobile.MobileBarcodeScanner.Cancel()无效

时间:2016-07-22 13:57:33

标签: xamarin uwp zxing

我正在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!";
    }
}

1 个答案:

答案 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中的示例代码

还有ZXing.Net.Mobile Getting Started