今天写一篇条形码扫描的文章,使用的是ZXing。
实现非常简单,下面一起来看一下步骤。
首先在项目中导入包:
接下来直接可以使用了:
直接在你的ViewController中声明变量:
MobileBarcodeScanner scanner;初始化变量:scanner = new MobileBarcodeScanner(this.NavigationController);下面的代码是在一个按钮点击事件中调用扫码的:Btn.TouchUpInside += async (sender, e) => { // ZXing scanner.UseCustomOverlay = false; // 底部两个按钮文字 scanner.FlashButtonText = "识别"; scanner.CancelButtonText = "取消"; // 方框上,下方文字提示 scanner.TopText = "请将条形码对准方框内"; scanner.BottomText = "确认后按下右下角识别按钮"; //Start scanning var result = await scanner.Scan(); // 处理结果 HandleScanResult(result); };下面是对结果简单的处理:void HandleScanResult(ZXing.Result result) { string msg = ""; if (result != null && !string.IsNullOrEmpty(result.Text)) msg = "扫描结果: " + result.Text; else msg = "你取消了!"; this.InvokeOnMainThread(() => { var av = new UIAlertView("Barcode Result", msg, null, "OK", null); av.Show(); }); }最后贴一张扫描的效果图差点忘了,添加摄像头的权限:PRivacy - Photo Library Usage Description。
上面实现的扫描条形码呢,需要我们手动点击识别按钮来识别,下面将调用的代码稍微改动一下,添加一个三秒延时自动识别:
Btn.TouchUpInside += (sender, e) => { // ZXing scanner.UseCustomOverlay = false; // 底部两个按钮文字 scanner.FlashButtonText = "识别"; scanner.CancelButtonText = "取消"; // 方框上,下方文字提示 scanner.TopText = "请将条形码对准方框内"; scanner.BottomText = "确认后按下右下角识别按钮"; // 延时三秒自动扫秒 var opt = new MobileBarcodeScanningOptions(); opt.DelayBetweenContinuousScans = 3000; scanner.ScanContinuously(opt, HandleScanResult); };好了,这样子调用即可达到自动识别的效果。写完了后遇到一个坑,如上面截图,公司给的条形码都是纸质打印的,当时刚写完后一直扫不上,于是开始怀疑ZXing性能的问题了。
后来换了几个条形码都没有问题。
最后在仔细看了看纸质的条形码打印的质量有问题。
大家遇到扫不上的时候先检查一下条形码有没有问题。
新闻热点
疑难解答