更新记录
1.14.9(2026-01-27)
- 识别结果回调参数增加识别码类型字段scanCodeType返回
1.14.8(2026-01-21)
- 更新安卓端部分依赖版本到1.4,解决上架Google商店要求16k导致上架失败的问题
1.14.7(2026-01-13)
- 优化IOS端关闭扫码页逻辑
平台兼容性
uni-app(4.66)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | 5.0 | 15 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.66)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | 5.0 | 15 | 11 | - |
插件使用说明文档
注意!
插件需要打自定义基座运行!
插件需要打自定义基座运行!
插件需要打自定义基座运行!
插件说明
本插件是封装了谷歌mlkit条码识别功能,支持多种条码类型扫码,
识别速度和准确率杠杠的,可以支持多个二维码识别,识别成功会有提示音和震动效果,类似wx扫码。
IOS端注意!,不支持摄像头切换,用法参考后面的用例(扫码插件支持的ios版本是>=15.5)
鸿蒙端注意:鸿蒙使用的是官方默认扫码界面UI,不支持自定义界面内容,只能单码识别,不支持连续扫码
扫码类型:支持文本、链接、电话、邮件、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 | 未识别到二维码时提示内容 |
识别成功回调参数说明
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的使用方式
<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的使用方式
<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项目中使用
<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>
在鸿蒙端使用用例(注意:鸿蒙使用的是官方默认扫码界面,不能自定义界面内容,只能单码识别,不支持连续扫码)
<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);
};

收藏人数:
购买源码授权版(
试用
赞赏(5)
下载 910
赞赏 5
下载 13759622
赞赏 1852
赞赏
京公网安备:11010802035340号