更新记录
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.2androidx.camera:camera-camera2:1.4.2androidx.camera:camera-lifecycle:1.4.2androidx.camera:camera-view:1.4.2com.google.mlkit:barcode-scanning:17.3.0
安装方式
- 将插件安装到项目的
uni_modules目录。 - 在 HBuilderX 中重新编译 Android App。
- 真机运行前确认已为应用授予相机权限。
导出 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。
- 识别在本地完成,不会上传图片或扫码结果。
- 若设备无可用相机、相机被占用或系统拒绝授权,会直接返回错误,不做静默降级。
- 当前未提供扫码框样式自定义接口。
隐私合规说明
- 无广告
- 不采集个人信息
- 不上传扫码内容
- 扫码识别完全在设备本地完成

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 19
赞赏 0
下载 11475639
赞赏 1902
赞赏
京公网安备:11010802035340号