zxing连续扫描在第二次使用时工作不同

时间:2016-01-15 18:21:04

标签: android xamarin mvvmcross zxing

我使用mvvmcross成功地将ZXing的ContinuousScan用于xamarin,我只需按下我的一个视图模型中的按钮就可以显示相机。我在4000的连续扫描之间使用了延迟,以允许用户以慢速读取条形码。第一次进入视图模型并进入扫描仪,一切都很完美。然后我按回来,我有一个包含代码的列表,我再次按回去并离开视图模型。我再次进入视图模型并打开扫描仪,它几乎没有关注条形码,它扫描它两到三次,而不等待最初设置为它的4000ms延迟。我在这里缺少什么?

public MvxCommand ObtainCommand()
    {
        return new MvxCommand(delegate
        {
            if (HandleScanResultEvent != null) HandleScanResultEvent(this, null);
            MobileBarcodeScanner.Initialize(Application);
            var scanner = new MobileBarcodeScanner();
            scanner.UseCustomOverlay = false;
            scanner.TopText = Ts.TopTextScanContiniously;
            scanner.BottomText = Ts.BottomTextScan;

            var opt = new MobileBarcodeScanningOptions();
            opt.DelayBetweenContinuousScans = 5000;

            //Start scanning
            scanner.ScanContinuously(opt, HandleScanResult);
        });
    }

Handle结果将事件引发到视图模型并读取条形码。

void HandleScanResult(ZXing.Result r)
{
    if (r != null)
    {
        var opa = new OperationArgument
        {
            Operation = new Operation
            {
                Data  r.Text,
                Format = FromXingFormat(r.BarcodeFormat)
            }
        };

        if (DataObtained != null && !(String.IsNullOrWhiteSpace(r.Text)))
        {
            DataObtained(this, opa);
        }
    }
}

通过分配给viewmodel的mvxCommand打开条形码扫描器。已发布的代码位于注册为单例的类中。

0 个答案:

没有答案