App Inventor 2 二维码/条形码扫描教程

覆盖:二维码扫描、条形码识别、连续扫描、自定义扫描

一、扫描方案

1.1 方案对比

方案优点缺点
ZXing开源、免费速度一般
ML Kit速度快、准确率高Google服务
扩展组件简单易用依赖扩展
推荐:使用Barcode二维码扫描扩展

二、基础扫描

2.1 界面布局

垂直布局
├── 标签_标题("二维码/条形码扫描")
├── 按钮_扫描("开始扫描")
├── 标签_结果
└── 图像选择框_预览

2.2 扫描代码

当 按钮_扫描.被点击 时
  调用 二维码扫描器1.扫描()

当 二维码扫描器1.扫描完成 时(扫描结果, 结果类型)
  设置 标签_结果.文本 = 扫描结果
  
  // 根据类型处理
  如果 在文本中查找(扫描结果, "http") >= 1 则
    // 是网址
    调用 对话框1.显示消息对话框("是否打开链接?", "提示", "打开|取消")
    当 对话框1.确认点击 时
      调用 Web查看器1.加载URL(扫描结果)
  否则
    // 其他内容
    调用 对话框1.显示消息对话框(扫描结果, "扫描结果", "确定")

三、高级功能

3.1 指定扫描类型

当 按钮_扫描.被点击 时
  调用 二维码扫描器1.设置扫描类型(创建列表("QR_CODE", "EAN_13", "CODE_128"))
  调用 二维码扫描器1.扫描()

3.2 闪光灯控制

当 按钮_闪光灯.被点击 时
  如果 按钮_闪光灯.文本 = "开闪光灯" 则
    调用 二维码扫描器1.开启闪光灯()
    设置 按钮_闪光灯.文本 = "关闪光灯"
  否则
    调用 二维码扫描器1.关闭闪光灯()
    设置 按钮_闪光灯.文本 = "开闪光灯"

3.3 前后摄像头切换

当 按钮_切换摄像头.被点击 时
  调用 二维码扫描器1.切换摄像头()

四、连续扫描

4.1 连续扫码模式

初始化全局变量 扫描次数 = 0
初始化全局变量 扫描结果列表 = 创建列表()

定义 开始连续扫描()
  设置 全局变量 扫描次数 = 0
  设置 全局变量 扫描结果列表 = 创建列表()
  调用 二维码扫描器1.扫描()

当 二维码扫描器1.扫描完成 时(扫描结果, 结果类型)
  设置 全局变量 扫描次数 = 全局变量 扫描次数 + 1
  追加列表项(全局变量 扫描结果列表, 扫描结果)
  
  设置 标签_计数.文本 = "已扫描: " + 全局变量 扫描次数
  设置 标签_最后结果.文本 = 扫描结果
  
  // 连续扫描(最多10个)
  如果 全局变量 扫描次数 < 10 则
    调用 二维码扫描器1.扫描()    // 继续扫描
  否则
    调用 对话框1.显示消息对话框("扫描完成", "提示", "确定")

五、生成二维码

5.1 生成图片

定义 生成二维码(内容)
  // 使用在线API生成
  设置 Web客户端1.URL = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=" + 内容
  调用 Web客户端1.发送GET请求()

当 Web客户端1.获得文本 时(URL, 响应码, 响应类型, 响应内容)
  如果 响应码 = 200 则
    // 获取的是图片URL
    设置 图像组件1.图片 = URL

六、实战:扫码付款

6.1 支付宝/微信付款码

当 二维码扫描器1.扫描完成 时(扫描结果, 结果类型)
  // 支付宝付款码:bar://...
  如果 在文本中查找(扫描结果, "bar://alipay") >= 1 则
    调用 对话框1.显示消息对话框("支付宝付款码", "提示", "确定")
    // 解析金额
    初始化局部变量 参数 = 替换所有文本(扫描结果, "bar://alipay?", "")
    设置 标签_金额.文本 = "金额: " + 获取参数值(参数, "amount", "未知")

七、常见问题

Q1:扫描失败?

  • 光线是否充足
  • 二维码是否完整
  • 摄像头是否对焦

Q2:返回null?

检查权限是否授予

Q3:速度慢?

使用ML Kit扩展更快

参考资料


文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn

参考资料与版权声明

原文来源

版权声明

本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:
  • MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。