更新记录

1.0.1(2026-04-07)

~

1.0.0(2026-04-06)

  • 初始版本,后续不定时更新。
  • 提供 Android 原生扫码页面
  • 支持二维码、EAN、UPC、Code 128、Code 39、ITF、PDF417、Data Matrix
  • 支持自定义标题、提示文案和手电筒开关显示

平台兼容性

uni-app(4.26)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - × × - - - × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × - × ×

uni-app x(4.26)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × - × × ×

其他

多语言 暗黑模式 宽屏模式
× ×

sin-camera-scanner

基于 CameraX + ML Kit 的 Android UTS 原生扫码插件,适用于 uni-app App 端扫码场景。

功能特性

  • 原生扫码页面,支持二维码和常见一维码识别
  • 使用 CameraX 处理预览与旋转,适配横竖屏切换
  • 使用 ML Kit 本地识别,不依赖服务器
  • 支持自定义标题、提示文案、手电筒按钮显示
  • 内置并发保护,避免重复打开多个扫码会话

平台支持

平台 支持情况 说明
Android App 支持 minSdkVersion = 23
iOS App 不支持 未实现
Harmony App 不支持 未实现
H5 不支持 无原生相机页
小程序 不支持 无原生相机页

原生依赖

  • androidx.camera:camera-core:1.4.2
  • androidx.camera:camera-camera2:1.4.2
  • androidx.camera:camera-lifecycle:1.4.2
  • androidx.camera:camera-view:1.4.2
  • com.google.mlkit:barcode-scanning:17.3.0

安装方式

  1. 将插件安装到项目的 uni_modules 目录。
  2. 在 HBuilderX 中重新编译 Android App。
  3. 真机运行前确认已为应用授予相机权限。

导出 API

isSupported(): boolean

判断当前运行环境是否存在可用的 Android Activity。

scan(options?: ScanOptions | null): Promise<ScanResult>

打开原生扫码页并返回识别结果。

ScanOptions

type ScanFormat =
  | 'qrCode'
  | 'ean13'
  | 'ean8'
  | 'upcA'
  | 'upcE'
  | 'code128'
  | 'code39'
  | 'itf'
  | 'pdf417'
  | 'dataMatrix'

type ScanOptions = {
  formats?: Array<ScanFormat>
  title?: string
  tip?: string
  showTorch?: boolean
}

ScanResult

type ScanResult = {
  text: string
  format: string
}

使用示例

import { isSupported, scan } from '@/uni_modules/sin-camera-scanner'

async function openScanner() {
  if (!isSupported()) {
    throw new Error('当前环境没有可用的原生 Activity,无法打开扫码页')
  }

  const result = await scan({
    title: '扫码',
    tip: '请将二维码或条码放入取景框内',
    showTorch: true,
    formats: ['qrCode', 'code128', 'ean13']
  })

  console.log(result.text, result.format)
}

错误码

扫码失败时会通过 Promise reject 返回错误信息,常见错误码如下:

错误码 说明
SCANNER_BUSY 已有扫码会话正在进行
START_ACTIVITY_FAILED 原生扫码页启动失败
CAMERA_PERMISSION_DENIED 未授予相机权限
BIND_CAMERA_FAILED CameraX 绑定失败
OPEN_CAMERA_FAILED 无法打开后置摄像头
SCAN_CANCELLED 用户主动取消扫码

权限说明

插件使用以下 Android 权限:

  • android.permission.CAMERA:用于打开相机进行二维码/条码识别

注意事项

  • 插件仅支持 Android App,不支持 H5、小程序、iOS。
  • 识别在本地完成,不会上传图片或扫码结果。
  • 若设备无可用相机、相机被占用或系统拒绝授权,会直接返回错误,不做静默降级。
  • 当前未提供扫码框样式自定义接口。

隐私合规说明

  • 无广告
  • 不采集个人信息
  • 不上传扫码内容
  • 扫码识别完全在设备本地完成

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.CAMERA:用于打开设备相机完成二维码/条码扫描

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件仅调用设备相机进行本地二维码/条码识别,不上传、不存储用户数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。