uniapp 扫码原生插件 - 新版(支持连续扫码模式;支持设置格式;可任意自定义界面)Ba-Scanner

简介(下载地址

Ba-Scanner 是一款毫秒级扫码插件,同时支持多码、相册、闪光灯、焦距缩放、提示音、震动等等。

新增支持自定义任意界面、任意点击事件,可以让扫码界面和您的应用更加匹配、美观。

新增支持连续扫码,可设置时间间隔,亲测持续扫码万次不卡顿

新增支持设置扫码格式

新增支持自定义webview遮罩界面,可直接传html地址,本地、网络都支持(参考:“自定义webview遮罩界面”)

  • 支持同时扫多个二维码和条形码
  • 支持配置相册
  • 支持闪光灯
  • 相机可以调整焦距放大缩小
  • 支持自定义扫描线颜色、提示文案等
  • 支持扫描完成提示音、震动
  • 支持任意自定义界面(支持自行定制,也可联系作者定制)
  • 支持自定义点击事件
  • 支持连续扫码模式
  • 支持设置扫码格式
  • 新增支持自定义webview遮罩界面,可直接传html地址,本地、网络都支持,(参考:“自定义webview遮罩界面”)

扫码原生插件 - 新版(支持连续扫码模式;支持设置格式;可任意自定义界面)

扫码原生插件 - 基础版(毫秒级、支持多码)

扫码原生插件 - (最经典zxing版本)

截图展示

在这里插入图片描述

使用方法(示例)

script 中引入组件

	const scanner = uni.requireNativePlugin('Ba-Scanner')

script 中调用

		methods: {
			onScan() { //默认界面
				scanner.onScan({
						isContinuous: true,
						barcodeFormats: ["QR Code"],
						scanTimeSpace: 2000,
						isShowVibrate: true,
						isShowBeep: false,
						hintText: '测试扫码',
					},
					(ret) => {
						console.log(ret)
						if (ret.result) {
							this.showToast(ret.result)
						}
					});
			},
			onScan2() { //自定义界面
				scanner.onScan({
						isShowVibrate: true,
						isShowBeep: false,
						hintText: '测试扫码',
						customResName: 'ba_scan_custom_view',
						customConfig: {
							lightTvTextOn: '轻触关闭',
							lightTvTextOff: '轻触照亮'
						},
						customEvents: [{
							resId: 'btn_my_card',
						}, {
							resId: 'btn_scan_record',
						}]
					},
					(ret) => {
						console.log(ret)
						if (ret.result) {
							this.showToast(ret.result)
						}
						if (ret.isCustomEvent) {
							this.showToast(ret.eventResId);
						}
					});
			},
			onScan3() {//自定义webview遮罩界面
				let that = this;
				scanner.onScan({
						isContinuous: true,
						scanTimeSpace: 3000,
						isShowVibrate: true,
						isShowBeep: true,
						hintText: '测试扫码',
						customWebview:'file:///android_asset/testScan.html'
					},
					(ret) => {
						console.log(ret)
						if (ret.result) {
							that.resultList.push(ret.result);
							that.showToast(ret.result);
						}
					});
			},
		}

默认界面

Ba-Scanner 自定义配置参数

属性名类型默认值说明
isShowVibrateBooleantrue扫描完成震动
isShowBeepBooleanfalse扫描完成声音
isShowPhotoAlbumBooleantrue是否显示相册
isShowLightControllerBooleantrue是否显示闪光灯开关
zoomBooleanfalse是否支持手势缩放
scanColorString#FF0000扫描线的颜色
hintTextString扫二维码/条形码提示文案
hintTextColorString#FF0000提示文案颜色
hintTextSizeNumber14提示文案字体大小
scanGridBooleanfalse扫描线样式是否为网格
gridScanLineColumnNumber30网格扫描线的列数
gridScanLineHeightNumber300网格高度
isContinuousBooleanfalse是否开启连续扫描,默认 false
scanTimeSpaceint1000连续扫描时间间隔,单位毫秒,默认 1000
isShowToastBooleantrue扫码成功是否 toast 提示,默认 true
barcodeFormatsArray设置扫码格式,支持多个,默认所有。如:[“QR Code”, “Code 128”]
支持的扫码格式 barcodeFormats 参数
  • 线性格式:Codabar、Code 39、Code 93、Code 128、EAN-8、EAN-13、IFF、UPC-A、UPC-E
  • 2D 格式:Aztec、Data Matrix、PDF417、QR Code(二维码)

回调参数

属性名类型说明
codeString扫描结果判断,success为成功,其他失败
resultString扫描结果

自定义webview遮罩界面

使用简单,直接在调用onScan时,加一个customWebview参数传html网址即可,同时支持网络和原生本地地址(assets)。如

            onScan3() {//自定义webview遮罩界面
                let that = this;
                scanner.onScan({
                        isContinuous: true,
                        scanTimeSpace: 3000,
                        isShowVibrate: true,
                        isShowBeep: true,
                        hintText: '测试扫码',
                        customWebview:'file:///android_asset/testScan.html'
                    },
                    (ret) => {
                        console.log(ret)
                        if (ret.result) {
                            that.resultList.push(ret.result);
                            that.showToast(ret.result);
                        }
                    });
            },

本地html放置位置如下,路径格式为 “file:///android_asset/”+文件名称,如“file:///android_asset/testScan.html”
在这里插入图片描述

html示例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>webview 遮罩界面</title>
		<script>
			function scanResult(result) { //监听扫码结果
				alert("result:" + result);
			}

			function closeScan() { //关闭扫码界面
				Android.closeScan();
			}

			function openAlbum() { //打开相册扫码
				Android.openAlbum();
			}

			function openLight() { //打开闪光灯
				Android.openLight();
			}

			function closeLight() { //关闭闪光灯
				Android.closeLight();
			}
		</script>
	</head>

	<body>
		<p style="color:white;">自定义 webview 遮罩界面</p>
	    <button type="button" onclick="closeScan()">closeScan</button>
		<button type="button" onclick="openAlbum()">openAlbum</button>
		<button type="button" onclick="openLight()">openLight</button>
		<button type="button" onclick="closeLight()">closeLight</button>
	</body>
</html>

自定义界面

示例

布局文件

自定义界面是编写 android 的xml布局界面,按文档配置即可,资源名称、控件id要和调用方法一致。可自行定制,也可联系作者定制。

  • 编写好对应的布局文件,放在项目的 “nativeplugins\Ba-Scanner\android\res\layout” 目录下(没有就新建)。
  • 所用到的图片资源,放在“nativeplugins\Ba-Scanner\android\res\drawable-xxhdpi” 目录下

注意:配置更改后,需要重新制作基座才生效,建议提前配置。
在这里插入图片描述

扫码调用参数

属性名类型必填默认值说明
customResNameStringtrue自定义界面名称
customConfigObjectfalse自定义界面配置
customEventsArrayfalse自定义点击事件
customConfig
属性名类型必填默认值说明
backResIdStringfalse“iv_back”返回控件ID
albumResIdStringfalse“iv_photo”相册控件ID
lightResIdStringfalse“btn_scan_light”闪光灯控件ID
lightIvResIdStringfalse“iv_scan_light”闪光灯图标控件ID
lightTVResIdStringfalse“tv_scan_light”闪光灯文本控件ID
lightTvTextOnStringtrue“关闭手电筒”闪光灯打开时显示文本
lightTvTextOffStringtrue“打开手电筒”闪光灯关闭时显示文本ID
lightIvIconOnStringtrue“scan_custom_light_open”闪光灯打开时显示图标
lightIvIconOffStringtrue“scan_custom_light_close”闪光灯关闭时显示图标
customEvents
属性名类型必填默认值说明
resIdStringtrue自定义点击事件ID
showBooleanfalsetrue自定义点击事件ID

回调参数

属性名类型说明
codeString扫描结果判断,success为成功,其他失败
resultString扫描结果

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件 Ba-Notify文档

应用未读角标插件 Ba-Shortcut-Badge文档

应用开机自启插件 Ba-Autoboot文档

扫码原生插件(毫秒级、支持多码)文档

扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)文档

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar文档

原生sqlite本地数据库管理 Ba-Sqlite文档

安卓保活插件 Ba-KeepAlive文档

安卓快捷方式(桌面长按app图标) Ba-Shortcut文档

自定义图片水印 Ba-Watermark文档

视频压缩插件 Ba-VideoCompressor文档

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon文档

原生Toast弹窗提示(可穿透所有界面) Ba-Toast文档

图片涂鸦、画笔 Ba-ImagePaint文档

pdf阅读 Ba-Pdf文档

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值