Xamarin.iOS 条形码扫描

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 18:01   11   0

今天写一篇条形码扫描的文章,使用的是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性能的问题了。

后来换了几个条形码都没有问题。

最后在仔细看了看纸质的条形码打印的质量有问题。

大家遇到扫不上的时候先检查一下条形码有没有问题。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP