This commit is contained in:
xsl
2026-03-11 09:44:18 +08:00
commit eeebb2070e
69 changed files with 2191 additions and 0 deletions
+373
View File
@@ -0,0 +1,373 @@
# 插件使用说明文档
<font size="5" color="#f00">注意!</font>
<font size="3" color="#f00">插件需要打自定义基座运行!</font>
<font size="3" color="#f00">插件需要打自定义基座运行!</font>
<font size="3" color="#f00">插件需要打自定义基座运行!</font>
#### 插件说明
```
本插件是封装了谷歌mlkit条码识别功能,支持多种条码类型扫码,
识别速度和准确率杠杠的,可以支持多个二维码识别,识别成功会有提示音和震动效果,类似wx扫码。
```
<font size="3" color="#f00">IOS端注意!,不支持摄像头切换,用法参考后面的用例(扫码插件支持的ios版本是>=15.5)</font>
<font size="3" color="#f00">鸿蒙端注意:鸿蒙使用的是官方默认扫码界面UI,不支持自定义界面内容,只能单码识别,不支持连续扫码</font>
#### 扫码类型:支持文本、链接、电话、邮件、WIFI等通用类型条码
```
type CodeType = 'text'| 'url'| 'wifi'| 'phone'| 'sms'
| 'email'
| 'contact'
| 'geo'
| 'calendar'
| 'driverLicense'
| 'isbn'
| 'product';
```
#### 支持扫码格式列表,默认支持全部格式,可以设置单个或多个扫码格式类型,不设置默认是0,支持全部扫码格式
------------------
* 1----->FORMAT_CODE_128
* 2----->FORMAT_CODE_39
* 4----->FORMAT_CODE_93
* 8----->FORMAT_CODABAR
* 32---->FORMAT_EAN_13
* 64---->FORMAT_EAN_8)
* 128--> FORMAT_ITF) 二维码
* 256--> FORMAT_QR_CODE 二维码
* 512--->FORMAT_UPC_A
* 1024-->FORMAT_UPC_E
* 2048-->FORMAT_PDF417
* 16---->FORMAT_DATA_MATRIX
* 4096-->FORMAT_AZTEC
--------------
* 参数说明
| 属性 | 类型 | 默认值 | 必填 | 描述 |
|-- |-- |-- |-- |-- |
|cameraType |string |BACK |N |开启前置摄像头,不设置默认使用后置摄像头,当设备只有一个摄像头,该设置无效,会自动取可用列表的摄像头 |
|continuous |boolean |false |N |设为true即可开启连续扫码,默认不开启 |
|continuousDelay |number |800 |N |连续扫码场景,间隔时间 |
|autoZoom |boolean |false |N |开启相机自动缩放,默认不开启,只限非连续扫码模式下使用 |
|styleFollowIos |boolean |true |N |页面样式是否跟随IOS端,默认true全屏模式 |
|showLamplight |boolean |true |N |隐藏/显示灯光操作,默认显示 |
|showPhotoAlbum |boolean |true |N |隐藏/显示相册操作,默认显示 |
|scanBox |boolean |false |N |中间区域扫码模式,默认关闭,(注意:如果开启此模式,styleFollowIos必须配置且为false) |
|scanBoxTitle |string |'将码放入取景框,即可自动扫描' |N |中间区域扫码模式标题,只有scanBox为true生效 |
|scanBoxTitleColor |string |'#ffffff' |N |中间区域扫码模式标题颜色,只有scanBox为true生效 |
|scanBoxTitleSize |number |16 |N |中间区域扫码模式标题大小,只有scanBox为true生效 |
|scanBoxHeight |number |540 |N |中间区域扫码框的高度,只有scanBox为true生效 |
|formatsVal |string |'0' |N |设置扫码的制式,默认为'0',支持全部制式 |
|markeTitle |string |'#ffffff' |N |设置扫码页底部识别中的提示文字 |
|showToast |boolean |false |N |二维码识别成功显示toast(只针对连续扫码生效) |
|showToastText |string |'自定义扫码成功提示' |N |设置连续扫码场景成功提示语 |
|lightOnText |string |'灯光打开' |N |自定义打开灯光文案 |
|lightOffText |string |'灯光关闭' |N |自定义关闭灯光文案 |
|photoText |string |'自定义相册文字' |N |相册底部文案(只针对安卓不跟随IOS端界面样式有效) |
|moreQrCodeSelectText |string |'识别到多个二维码,请选择一个打开' |N |多个二维码选择提示文案 |
|moreQrCodeSelectTextColor |string |'#ffffff' |N |多个二维码选择提示文案颜色 |
|moreQrCodeSelectTextSize |number |16 |N |多个二维码选择提示文案大小 |
|outputAllCodeData |boolean |false |N |开启后,直接返回扫码数据,获取返回值内容需要取optionArr字段,默认关闭(只针对全屏扫码且非连续扫码有效) |
|customFailToatText|string|未识别到二维码|N|未识别到二维码时提示内容|
#### 识别成功回调参数说明
```html
CallbackValType{
type --- 识别码内容类型 例如文本-text 链接-url 商品-product
option ----{
textVal?:string ------- 文本值
url?:string --------- 链接
phone?:string -------- 手机号
proNumber?:string ----- 商品编号
}
optionArr ---- 当初始化配置outputAllCodeData设置为true时,该字段才有值,内容字段和option字段一致
scanCodeType ----- 识别码为二维码/条形码 1- 二维码 2- 条形码 0- 未知 (当outputAllCodeData设置为true时,该字段会包含在optionArr的每个子项中)
}
```
------------
#### 页面调用插件方式
* uniapp的使用方式
```html
<template>
<view>
<button @click="openScan">打开扫码</button>
</view>
</template>
<script>
import {openCamera,closeCamera,setContinuousScanStatus} from '@/uni_modules/xwq-mlkit-scan-code';
export default {
methods: {
openScan(){
openCamera({
cameraType:"FRONT",//开启前置摄像头,不设置默认使用后置摄像头,当设备只有一个摄像头,该设置无效,会自动取可用列表的摄像头
continuous:true,//设为true即可开启连续扫码,默认不开启
continuousDelay:2000,//连续扫码间隔时间
autoZoom:true,//开启相机自动缩放,默认不开启,只限非连续扫码模式下使用
styleFollowIos:false, //页面样式是否跟随IOS端,默认false不跟随
showLamplight:false,//隐藏灯光操作,默认显示
showPhotoAlbum:false,//隐藏相册操作,默认显示
scanBox:true, //中间区域扫码模式 (注意:如果开启此模式,styleFollowIos必须配置且为false)
scanBoxTitle:'将码放入取景框,即可自动扫描',//中间区域扫码模式标题,只有scanBox为true生效
scanBoxTitleColor:"#ff0000",//中间区域扫码模式标题颜色,只有scanBox为true生效
scanBoxTitleSize:16,//中间区域扫码模式标题大小,只有scanBox为true生效
scanBoxHeight:200, //中间区域扫码框的高度,只有scanBox为true生效
formatsVal:'32,128,256', //扫码格式
markeTitle:'', //扫码页底部提示文字
showToast:false,//二维码识别成功显示toast(只针对连续扫码生效)
showToastText:"自定义扫码成功提示",//连续扫码场景提示语
customFailToatText:"自定义未识别到二维码信息", //未识别到二维码时提示内容
lightOnText:'灯光打开',//自定义打开灯光文案
lightOffText:'灯光关闭',//自定义关闭灯光文案
photoText: "自定义相册文字",//相册底部文案
moreQrCodeSelectText:"当前识别到多个二维码,请选择一个", //多个二维码选择提示文案
moreQrCodeSelectTextColor:"#ff0000", //多个二维码选择提示文案颜色
moreQrCodeSelectTextSize:18, //多个二维码选择提示文案大小
outputAllCodeData:false, //开启后,直接返回扫码数据,获取返回值内容需要取optionArr字段,默认关闭(只针对全屏扫码且非连续扫码有效)
success:(val)=>{
console.log('扫码结果回调===',val)
// 返回参数增加scanCodeType 识别码类型 1- 二维码 2- 条形码 0- 未知
//暂停扫码(针对连续扫码场景生效)
// setContinuousScanStatus(true)
// if(val.optionArr!=null&&val.optionArr!.length>0){
// val.optionArr?.forEach(item=>{
// result.value.push(item.textVal ?? '');
// })
// }else{
// result.value.push(val.option.textVal ?? '');
// }
// setTimeout(()=>{
//接口识别后,继续扫码
// setContinuousScanStatus(false)
// },5000)
},
error:(val) => {
console.log('识别失败===', val);
uni.showToast({
title:"没有识别到二维码"
})
},
cancel:()=>{
console.log('取消扫码')
}
});
},
}
}
</script>
```
* uniappX的使用方式
```html
<template>
<view>
<button @click="openScan">打开扫码</button>
</view>
</template>
<script lang='uts'>
import {openCamera,closeCamera,setContinuousScanStatus} from '@/uni_modules/xwq-mlkit-scan-code';
import { InitParamsType, CallbackValType,ErrorCallbackValType } from '@/uni_modules/xwq-mlkit-scan-code/utssdk/interface.uts';
export default {
data() {
return {}
},
methods: {
openScan(){
openCamera({
cameraType:"FRONT",//开启前置摄像头,不设置默认使用后置摄像头,当设备只有一个摄像头,该设置无效,会自动取可用列表的摄像头
continuous:true,//设为true即可开启连续扫码,默认不开启
continuousDelay:2000,//连续扫码间隔时间
autoZoom:true,//开启相机自动缩放,默认不开启,只限非连续扫码模式下使用
styleFollowIos:false, //页面样式是否跟随IOS端,默认false不跟随
showLamplight:false,//隐藏灯光操作,默认显示
showPhotoAlbum:false,//隐藏相册操作,默认显示
scanBox:true, //中间区域扫码模式 (注意:如果开启此模式,styleFollowIos必须配置且为false)
scanBoxTitle:'将码放入取景框,即可自动扫描',//中间区域扫码标题,只有scanBox为true生效
scanBoxTitleColor:"#ff0000",//中间区域扫码标题颜色,只有scanBox为true生效
scanBoxTitleSize:16,//中间区域扫码标题大小,只有scanBox为true生效
scanBoxHeight:200, //中间区域扫码框的高度,只有scanBox为true生效
formatsVal:'32,128,256', //扫码格式
markeTitle:'', //扫码页底部提示文字
showToast:false,//二维码识别成功显示toast(只针对连续扫码生效)
showToastText:"自定义扫码成功提示",//连续扫码场景提示语
customFailToatText:"自定义未识别到二维码信息", //未识别到二维码时提示内容
lightOnText:'灯光打开',//自定义打开灯光文案
lightOffText:'灯光关闭',//自定义关闭灯光文案
photoText: "自定义相册文字",//相册底部文案
moreQrCodeSelectText:"当前识别到多个二维码,请选择一个", //多个二维码选择提示文案
moreQrCodeSelectTextColor:"#ff0000", //多个二维码选择提示文案颜色
moreQrCodeSelectTextSize:18, //多个二维码选择提示文案大小
outputAllCodeData:false, //开启后,直接返回扫码数据,获取返回值内容需要取optionArr字段,默认关闭(只针对全屏扫码且非连续扫码有效)
success:(val:CallbackValType)=>{
console.log('扫码结果回调===',val)
//暂停扫码(针对连续扫码场景生效)
// setContinuousScanStatus(true)
// 返回参数增加scanCodeType 识别码类型 1- 二维码 2- 条形码 0- 未知
// if(val.optionArr!=null&&val.optionArr!.length>0){
// val.optionArr?.forEach(item=>{
// result.value.push(item.textVal ?? '');
// })
// }else{
// result.value.push(val.option.textVal ?? '');
// }
// setTimeout(()=>{
//接口识别后,继续扫码
// setContinuousScanStatus(false)
// },5000)
},
error:(val : ErrorCallbackValType) => {
console.log('识别失败===', val);
uni.showToast({
title:"没有识别到二维码"
})
},
cancel:()=>{
console.log('取消扫码')
}
} as InitParamsType);
},
}
}
</script>
```
### IOS端UniappX项目中使用
```html
<template>
<view>
<button @click="openScan">打开扫码</button>
</view>
</template>
<script setup>
import { openCamera,closeCamera,setContinuousScanStatus} from '@/uni_modules/xwq-mlkit-scan-code';
import { InitParamsType, CallbackValType,ErrorCallbackValType } from '@/uni_modules/xwq-mlkit-scan-code/utssdk/interface.uts';
const openScan = () => {
openCamera({
continuous:true,//设为true即可开启连续扫码,默认不开启
continuousDelay:2000,//连续扫码间隔时间
autoZoom:true,//开启相机自动缩放,默认不开启,只限非连续扫码模式下使用
styleFollowIos:false, //页面样式是否跟随IOS端,默认false不跟随
showLamplight:false,//隐藏灯光操作,默认显示
showPhotoAlbum:false,//隐藏相册操作,默认显示
formatsVal:'32,128,256', //扫码格式
scanBox:true, //中间区域扫码模式 (注意:如果开启此模式,styleFollowIos必须配置且为false)
scanBoxTitle:'将码放入取景框,即可自动扫描',//中间区域扫码标题,只有scanBox为true生效
scanBoxTitleColor:"#ff0000",//中间区域扫码标题颜色,只有scanBox为true生效
scanBoxTitleSize:16,//中间区域扫码标题大小,只有scanBox为true生效
scanBoxHeight:200, //中间区域扫码框的高度,只有scanBox为true生效
markeTitle:'', //扫码页底部提示文字
showToast:false,//二维码识别成功显示toast(只针对连续扫码生效)
showToastText:"自定义扫码成功提示",//连续扫码场景提示语
customFailToatText:"自定义未识别到二维码信息", //未识别到二维码时提示内容
lightOnText:'灯光打开',//自定义打开灯光文案
lightOffText:'灯光关闭',//自定义关闭灯光文案
photoText: "自定义相册文字",//相册底部文案
moreQrCodeSelectText:"当前识别到多个二维码,请选择一个", //多个二维码选择提示文案
moreQrCodeSelectTextColor:"#ff0000", //多个二维码选择提示文案颜色
moreQrCodeSelectTextSize:18, //多个二维码选择提示文案大小
outputAllCodeData:false, //开启后,直接返回扫码数据,获取返回值内容需要取optionArr字段,默认关闭(只针对全屏扫码且非连续扫码有效)
success: (val : CallbackValType) => {
console.log('识别结果====', val)
//暂停扫码(针对连续扫码场景生效)
// setContinuousScanStatus(true)
// 返回参数增加scanCodeType 识别码类型 1- 二维码 2- 条形码 0- 未知
// if(val.optionArr!=null&&val.optionArr!.length>0){
// val.optionArr?.forEach(item=>{
// result.value.push(item.textVal ?? '');
// })
// }else{
// result.value.push(val.option.textVal ?? '');
// }
// setTimeout(()=>{
//接口识别后,继续扫码
// setContinuousScanStatus(false)
// },5000)
},
error:(val : ErrorCallbackValType) => {
console.log('识别失败===', val);
uni.showToast({
title:"没有识别到二维码"
})
},
cancel:()=>{
console.log('取消扫码')
}
} as InitParamsType);
};
</script>
```
### 在鸿蒙端使用用例(注意:鸿蒙使用的是官方默认扫码界面,不能自定义界面内容,只能单码识别,不支持连续扫码)
```html
<template>
<view>
<button @click="openScan">打开扫码</button>
</view>
</template>
<script setup>
import { openCamera } from '@/uni_modules/xwq-mlkit-scan-code';
import { InitParamsType, CallbackValType,ErrorCallbackValType } from '@/uni_modules/xwq-mlkit-scan-code/utssdk/interface.uts';
const openScan = () => {
openCamera({
showPhotoAlbum:true,//相册入口是否开启
success: (val : CallbackValType) => {
console.log('识别结果====', val)
uni.showToast({
title:'识别成功'
})
},
error:(val : ErrorCallbackValType) => {
console.log('识别失败===', val);
uni.showToast({
title:"没有识别到二维码"
})
},
cancel:()=>{
console.log('取消扫码')
}
} as InitParamsType);
};
```
### 其他插件预览
[(兼容IOS、安卓、鸿蒙)二维码、条码识别,mlkit扫码插件 毫秒级识别效率,支持多码识别,连续扫](https://ext.dcloud.net.cn/plugin?id=17575)
[TTS(安卓、ios、鸿蒙、web)将文字转成语音播报](https://ext.dcloud.net.cn/plugin?id=21718)
[(兼容安卓、IOS端)离线语音识别插件、支持离线语音](https://ext.dcloud.net.cn/plugin?id=23397)
[(UNIAPPX原生播放器)仿抖音视频刷刷刷 刷视频 自动滑动视频,短剧刷视频必备神器](https://ext.dcloud.net.cn/plugin?id=24719)
[(安卓、IOS) PDF预览插件](https://ext.dcloud.net.cn/plugin?id=25438)
[(兼容安卓、鸿蒙端、iOS)onnx 大模型实时语音识别 wav音频文件转文本](https://ext.dcloud.net.cn/plugin?id=26641)
[(兼容安卓、鸿蒙)录音插件,支持pcm实时回调,wav转换,后台录音](https://ext.dcloud.net.cn/plugin?id=26890)
[(nvue)app端仿抖音短视频 丝滑切换视频效果,无限数据加载](https://ext.dcloud.net.cn/plugin?id=21073)
[兼容安卓、IOS端支持全局消息弹窗插件](https://ext.dcloud.net.cn/plugin?id=20254)
[(支持安卓和IOS端)原生UTS组件svg插件](https://ext.dcloud.net.cn/plugin?id=18803)
[(兼容IOS和安卓Web三端)SVGA 动画组件 支持自定义文本、图片,图层隐藏功能](https://ext.dcloud.net.cn/plugin?id=16489)
[系统权限验证、获取、跳转](https://ext.dcloud.net.cn/plugin?id=15673)
[(兼容安卓、IOS、鸿蒙)二维码 qrcode 自定义logo图片 颜色可自定义](https://ext.dcloud.net.cn/plugin?id=15583)
[仿抖音短视频微信小程序 丝滑切换视频效果,无限数据加载不卡顿,咨询进IM交流群](https://ext.dcloud.net.cn/plugin?id=13679)