Skip to content

Scan Provider 扫码核心

查看 sn-e-scan-provider 的 2.0 版本差异

基础用法

  • SinleUI 扫码插件的核心部分,基于 CameraX + ML Kit 实现,负责摄像头预览、扫码解析等基础工作,并向外部提供接口(仅支持 Android 平台)。
  • 支持二维码、条形码、全格式识别;支持扫描结果识别点坐标返回;支持图片扫码(scanImageByURI);支持手势缩放、双击对焦(并复位缩放)、手电筒;支持扫码成功提示音(默认提示音 / ding-file-src 自定义音频)。
  • 摄像头扫码成功后画面会停止并释放相机资源,如需继续扫描请调用 rescan() 重新启动。
  • 如果不满意内置 sn-scan 组件的界面,可以参考 sn-scan 对本组件进行再封装。
  • 由于插件使用了第三方依赖,导入插件后必须打包自定义基座后运行。
vue
<template>
	<sn-e-scan-provider ref="scanEle" scan-type="all" enable-zoom @scanned="onScanned" @error="onError"></sn-e-scan-provider>
</template>
<script lang="uts" setup>
import { SnScanResult } from '@/uni_modules/sn-e-scan-provider'

function onScanned(res: SnScanResult): void {
	console.log(res.data, res.scanMode)
}

function onError(err: SnScanProviderErrorImpl): void {
	console.log(err.errCode, err.errMsg)
}
</script>

兼容性

WebAndroid
×

更多演示请下载 demo 查看

属性

参数说明类型默认值可选值
scanType扫码类型SnScanType'all''qrcode' | 'barcode' | 'all'
enableDing是否开启扫码成功提示音Booleantruetrue | false
dingFileSrc自定义提示音音频路径,留空使用内置提示音String''-
enableZoom是否允许手势缩放(捏合缩放、双击对焦并复位缩放)Booleantruetrue | false
initZoomScale初始缩放比例(线性缩放,0 ~ 1)Number0-
autoStart组件初始化后是否自动启动相机并请求权限Booleantruetrue | false
cameraPermTip相机权限请求说明文案String 本应用正在请求您的相机权限,仅用于条码、二维码识别,且不会将任何数据上传至云端。如不提供此权限,则无法正常使用扫码功能。-
customStyle根节点自定义样式UTSJSONObject | String''-
customClass根节点外部样式类String''-

事件

名称类型说明
scanned(result: SnScanResult) => Void扫码成功时触发,result 结构见下文类型
error(error: SnScanProviderErrorImpl) => Void扫码出错时触发(权限被拒、相机初始化失败、图片识别失败等),错误码见下文错误码

方法

名称参数返回值描述
start--启动相机开始扫码(自动请求相机权限);auto-start 为 false 时需手动调用
stop--停止扫码并释放相机资源
rescan--扫码成功画面静止后,重新启动相机继续扫描
setTorchStatus(status: boolean)-设置手电筒开关状态
scanImageByURI(uri: String)-识别指定图片中的一 / 二维码,相对路径会自动转为绝对路径
setZoomRatio(zoomRatio: number)-设置缩放比例,自动约束在相机支持的最小 / 最大变焦范围内
getZoomRatio-Number获取当前缩放比例,未启动相机时返回 1

类型

@scanned 事件返回 SnScanResult 对象,相关类型均由本插件导出:

扫码类型。

可选值备注
qrcode二维码
barcode一维码
all两者均可识别

扫码来源模式。

可选值备注
camera相机扫码
image相册图片识别
名称类型必填描述
centerXnumber识别点在源图中的横向坐标
centerYnumber识别点在源图中的纵向坐标
名称类型必填描述
valuestring识别出的文本数据
positionSnScanDataPosition识别点位置
名称类型必填描述
dataSnScanData[]识别结果数组
scanModeSnScanMode结果来源,camera 相机扫码 / image 图片识别
sourceWidthnumber本次识别原图宽度(已按旋转方向修正),可选
sourceHeightnumber本次识别原图高度(已按旋转方向修正),可选
typescript
import { SnScanResult } from '@/uni_modules/sn-e-scan-provider'

错误码

@error 事件返回 SnScanProviderErrorImplUniError 子类),错误码定义:

错误码说明
1602001相机权限被拒绝
1602002相机初始化失败
1602003图片扫码失败
1602004无效的图片 URI
1602005内部错误

使用 MIT 协议