Files
test/uni_modules/xwq-mlkit-scan-code/readme.md
T
2026-03-11 09:44:18 +08:00

17 KiB
Raw Blame History

插件使用说明文档

注意!

插件需要打自定义基座运行!

插件需要打自定义基座运行!

插件需要打自定义基座运行!

插件说明

本插件是封装了谷歌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);
	
	};

其他插件预览

(兼容IOS、安卓、鸿蒙)二维码、条码识别,mlkit扫码插件 毫秒级识别效率,支持多码识别,连续扫 TTS(安卓、ios、鸿蒙、web)将文字转成语音播报 (兼容安卓、IOS端)离线语音识别插件、支持离线语音 (UNIAPPX原生播放器)仿抖音视频刷刷刷 刷视频 自动滑动视频,短剧刷视频必备神器 (安卓、IOS) PDF预览插件 (兼容安卓、鸿蒙端、iOS)onnx 大模型实时语音识别 wav音频文件转文本 (兼容安卓、鸿蒙)录音插件,支持pcm实时回调,wav转换,后台录音 (nvue)app端仿抖音短视频 丝滑切换视频效果,无限数据加载 兼容安卓、IOS端支持全局消息弹窗插件 (支持安卓和IOS端)原生UTS组件svg插件 (兼容IOS和安卓Web三端)SVGA 动画组件 支持自定义文本、图片,图层隐藏功能 系统权限验证、获取、跳转 (兼容安卓、IOS、鸿蒙)二维码 qrcode 自定义logo图片 颜色可自定义 仿抖音短视频微信小程序 丝滑切换视频效果,无限数据加载不卡顿,咨询进IM交流群