更新记录
1.8(2025-09-26)
- 抓拍水印优化
 - 参数更新优化
 
1.7(2025-09-18)
- 支持抓拍水印
 - 支持动态更新参数
 
1.6(2024-12-14)
支持获取扫码成功的那一帧照片
查看更多平台兼容性
| Android | Android CPU类型 | iOS | 
|---|---|---|
| 适用版本区间:5.0 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | × | 
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
 - 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
 - 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
 - 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
 - 开发完毕后正式云打包
 
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios    
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
扫码原生插件 - 组件版(毫秒级、连续扫码、多码、拍照)Ba-ScanView2
简介
Ba-ScanView2 是一款毫秒级扫码插件,采用component组件模式,可直接在uniapp界面直接引用,高宽可随意设置;支持抓拍照片;支持Ba-Scanner-G模式跳转。
- component组件模式,可直接在uniapp界面直接引用,高宽可随意设置
 - 支持连续扫码,可设置时间间隔
 - 支持多码选择
 - 支持设置扫码格式
 - 支持打开、关闭闪光灯
 - 支持相册图片识别
 - 同时支持vue2和vue3
 - 支持关闭和打开扫描
 - 支持多码直接返回
 - 支持前置、后置摄像头
 - 支持拍照
 - 新增支持获取扫码成功的那一帧照片
 - 支持扫码抓拍到相册
 - 支持扫码抓拍加水印
 - 支持跳转扫码页(Ba-Scanner-G的功能)
 
注意 :原生组件,请使用nvue
支持定制,有建议和需要(q2579546054)
也可关注博客,实时更新最新插件:
扫码原生插件 - 新版(支持连续扫码模式;支持设置格式;可任意自定义界面)Ba-Scanner
扫码原生插件 - 基础版(毫秒级、支持多码)Ba-Scanner-G
扫码原生插件 - 组件版(毫秒级、连续扫码、多码、相册)Ba-ScanView
扫码原生插件 - 组件版(毫秒级、连续扫码、多码、相册、新增支持拍照)Ba-ScanView2
扫码原生插件 - 组件版(华为、连续扫码、多码、相册、新增支持抓拍图片)Ba-ScanViewH
扫码原生插件 - (最经典zxing版本)Ba-Scanner-Zxing
组件部分 Ba-ScanViewS
使用方法(示例)
在 template 中直接引用
        <Ba-ScanViewS ref="scanViewS" style="height: 200;width: 100%;" :load="loadData" @onScan="onScan"
            @onSaveImg="onSaveImg">
        </Ba-ScanViewS>
在 script 中调用
    export default {
        data() {
            return {
                loadData: {//配置
                    scanTimeSpace: 1000,//时间间隔
                    //isDirScanMulti: true,//是否直接返回多码,默认fasle(弹窗多码标识,用户自己选择)
                    //rpCancelBtnText: 'cancel',
                    isShowToast: true,
                    isSaveScanImgAlbum: true,//扫码抓拍到相册
                    waterMarks: [//扫码抓拍水印
                        "时间:2024.07.21 20:40",
                        "地点:塔什库尔干塔吉克自治县·帕米尔旅游区"
                    ]
                }
            }
        },
        onLoad() {
            let that = this;
            //监听扫码结果(vue2和vue3都支持)
            var globalEvent = uni.requireNativePlugin('globalEvent');
            globalEvent.addEventListener('baScanViewEvent', function(e) {
                console.log('baScanViewEvent' + JSON.stringify(e));
            });
        },
        methods: {
            onScan(e) {//扫码监听(仅支持vue2,vue3请使用globalEvent方式)
                console.log("onScan:" + e.detail.result);
                console.log("onScan:" + e.detail.results);//多个
            },
            onSaveImg(e) {//照片监听
                uni.showToast({
                    title: JSON.stringify(e.detail),
                    icon: 'none'
                })
                this.msgList.unshift(JSON.stringify(e.detail))
            },
            updateWaterMarks() {//更新抓拍水印
                let that = this;
                let timeStr = new Date().getTime();
                this.$refs.scanViewS.updateWaterMarks({
                        waterMarks: [
                            "时间:" + timeStr,
                            "地点:塔什库尔干塔吉克自治县·帕米尔旅游区"
                        ]
                    },
                    res => {
                        that.showResult(res)
                    });
            },
            clearWaterMarks() {//不显示抓拍水印
                let that = this;
                this.$refs.scanViewS.updateWaterMarks({
                        waterMarks: []
                    },
                    res => {
                        that.showResult(res)
                    });
            },
            updateOptions() { //更新参数
                let that = this;
                this.$refs.scanViewS.updateOptions({
                        isDirScanMulti: false,
                        scanTimeSpace: 10000,
                        isShowVibrate: false,
                        isShowBeep: false
                    },
                    res => {
                        that.showResult(res)
                    });
            },
            openScanLight() {//打开闪光灯
                this.$refs.scanViewS.openScanLight();
            },
            closeScanLight() {//关闭闪光灯
                this.$refs.scanViewS.closeScanLight();
            },
            isLightOn() {//是否打开闪光灯
                this.$refs.scanViewS.isLightOn(res => {
                    uni.showToast({
                        title: 'isLightOn:' + res.isLightOn,
                        icon: 'none'
                    })
                });
            },
            openAlbumPage() {//相册识别
                this.$refs.scanViewS.openAlbumPage();
            },
            openScan() { //打开扫描
                this.$refs.scanViewS.openScan();
            },
            closeScan() { //关闭扫描
                this.$refs.scanViewS.closeScan();
            },
            isScanOpen() { //是否打开扫描
                this.$refs.scanViewS.isScanOpen(res => {
                    uni.showToast({
                        title: 'isScanOpen:' + res.isScanOpen,
                        icon: 'none'
                    })
                });
            },
            openCamera() { //打开摄像头
                this.$refs.scanViewS.openCamera(
                    res => {
                        that.showResult(res)
                    });
            },
            closeCamera() { //关闭摄像头
                let that = this;
                this.$refs.scanViewS.closeCamera(
                    res => {
                        that.showResult(res)
                    }, {
                        bgColor: "#000000"
                    });
            },
            takePhoto() { //拍照
                this.$refs.scanViewS.takePhoto(res => {
                    uni.showToast({
                        title: 'path:' + res.path,
                        icon: 'none'
                    })
                });
            },
        }
    }
默认界面
load 配置参数
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| isShowVibrate | Boolean | true | 扫描完成震动 | 
| isShowBeep | Boolean | false | 扫描完成声音 | 
| scanTimeSpace | int | 1000 | 连续扫描时间间隔,单位毫秒,默认 1000 | 
| isShowToast | Boolean | true | 扫码成功是否 toast 提示,默认 true | 
| barcodeFormats | Array | 设置扫码格式,支持多个,默认所有。如:["QR Code", "Code 128"] | |
| scanColor | String | #FF0000 | 扫描线的颜色 | 
| hintText | String | 扫二维码/条形码 | 提示文案 | 
| hintTextColor | String | #FF0000 | 提示文案颜色 | 
| hintTextSize | Number | 14 | 提示文案字体大小 | 
| isDirScanMulti | Boolean | false | 是否直接返回多码,默认false(弹窗多码标识,用户自己选择) | 
| rpCancelBtnText | String | 取消 | 取消按钮文本 | 
| isFacingFront | Boolean | false | 是否是前置摄像头,默认false | 
| isFacingFront | Boolean | false | 是否是前置摄像头,默认false | 
| isSaveScanImg | Boolean | false | 是否保存扫码成功照片(抓拍),默认false | 
| isSaveFullScanImg | Boolean | false | 是否保存扫码成功照片(全摄像头;抓拍),默认false | 
| isSaveScanImgAlbum | Boolean | false | 是否保存扫码成功照片到相册(抓拍),默认false | 
| waterMarks | Array | 保存扫码成功照片的水印,有值就显示,没值不显示 | |
| waterMarksPreview | Boolean | false | 是否开启抓拍水印预览,默认false | 
支持的扫码格式 barcodeFormats 参数
- 线性格式:Codabar、Code 39、Code 93、Code 128、EAN-8、EAN-13、IFF、UPC-A、UPC-E
 - 2D 格式:Aztec、Data Matrix、PDF417、QR Code(二维码)
 
接口说明
| 方法名 | 说明 | 
|---|---|
| openScanLight | 打开闪光灯 | 
| closeScanLight | 关闭闪光灯 | 
| isLightOn | 是否打开闪光灯 | 
| openAlbumPage | 相册识别 | 
| openScan | 打开扫描 | 
| closeScan | 关闭扫描 | 
| isScanOpen | 是否打开扫描 | 
| takePhoto | 拍照(流获取,速度较快) | 
| takePicture | 拍照(相机) | 
| openCamera | 打开摄像头 | 
| closeCamera | 关闭摄像头 | 
| zoomTo | 缩放摄像头:(参数ratio为缩放比例:1.0表示无缩放,大于1.0表示放大,小于1.0表示缩小) | 
| updateOptions | 动态更新参数 | 
| updateWaterMarks | 更新抓拍水印 | 
takePhoto/takePicture方法参数
传参
| 属性名 | 类型 | 必填 | 默认值 | 说明 | 
|---|---|---|---|---|
| path | String | false | '' | 设置拍照图片地址,可不传 | 
| isFull | Boolean | false | false | 是否全摄像头显示,默认false,和预览屏一致 | 
| zoom | number | false | 返回图片与原图比例(调节清晰度使用),默认为调优算法 | 
返回
| 属性名 | 类型 | 说明 | 
|---|---|---|
| path | String | 拍照图片地址 | 
| status | Boolean | 是否拍照成功 | 
closeCamera方法参数
传参
| 属性名 | 类型 | 必填 | 默认值 | 说明 | 
|---|---|---|---|---|
| bgColor | String | false | '#000000' | 关闭摄像头后遮罩颜色 | 
跳转界面扫码部分
使用方法(示例)
在 script 中引入组件
    const scanView = uni.requireNativePlugin('Ba-ScanView2')
在 script 中调用
        methods: {
            onScanG() {
                scanView.onScan({
                        'isShowVibrate': true,
                        'isShowBeep': true,
                        'isShowPhotoAlbum': true,
                        'isShowLightController': true,
                        'zoom': true,
                        'scanColor': '#ff0000',
                        'hintText': '扫二维码/条形码',
                        'hintTextColor': '#ffffff',
                        'hintTextSize': '14'
                    },
                    (res) => {
                        if (res.code == "success")
                        ...
                        //扫码结果 res.result
                    });
            }
        }
Ba-ScanView2 自定义配置参数
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| isShowVibrate | Boolean | true | 扫描完成震动 | 
| isShowBeep | Boolean | false | 扫描完成声音 | 
| isShowPhotoAlbum | Boolean | true | 是否显示相册 | 
| isShowLightController | Boolean | true | 是否显示闪光灯开关 | 
| zoom | Boolean | false | 是否支持手势缩放 | 
| scanColor | String | #FF0000 | 扫描线的颜色 | 
| hintText | String | 扫二维码/条形码 | 提示文案 | 
| hintTextColor | String | #FF0000 | 提示文案颜色 | 
| hintTextSize | Number | 14 | 提示文案字体大小 | 
| scanGrid | Boolean | false | 扫描线样式是否为网格 | 
| gridScanLineColumn | Number | 30 | 网格扫描线的列数 | 
| gridScanLineHeight | Number | 300 | 网格高度 | 
统一回调参数
| 属性名 | 类型 | 说明 | 
|---|---|---|
| code | String | 扫描结果判断,success为成功,其他失败 | 
| result | String | 扫描结果 | 
返回识别成功的那一帧照片
1.在load初始化参数中,开启获取识别成功照片
参数为isSaveScanImg(获取预览区域大小照片;默认false)、isSaveFullScanImg(获取完整区域大小照片;默认false)
2.在组件引用中添加onSaveImg返回监听,如下
        <Ba-ScanViewS ref="scanViewS" style="height: 200;width: 100%;" :load="loadData" @onScan="onScan"
            @onSaveImg="onSaveImg">
        </Ba-ScanViewS>
3.处理返回数据
            onSaveImg(e) {
                //e.detail.action 固定值“onSaveImgResult”,代表识别照片抓取返回
                //e.detail.path  图片路径
            },
系列插件
应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify(文档)
自定义通知(耳机电量)插件 Ba-NotifyEarphone(文档)
应用未读角标插件 Ba-Shortcut-Badge (文档)
扫码原生插件(毫秒级、支持多码)Ba-Scanner-G(文档)
扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)Ba-Scanner(文档)
动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar(文档)
安卓保活插件(采用多种主流技术) Ba-KeepAlive(文档)
安卓保活套装(通用、常驻通知、电池优化、自启管理、后台运行等)(文档)
安卓快捷方式(桌面长按app图标) Ba-Shortcut(文档)
自定义图片水印(任意位置) Ba-Watermark(文档)
最接近微信的图片压缩插件 Ba-ImageCompressor(文档)
视频压缩、视频剪辑插件 Ba-VideoCompressor(文档)
动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon(文档)
原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast(文档)
websocket原生服务(自动重连、心跳检测) Ba-Websocket(文档)
智能安装(自动升级) Ba-SmartUpgrade(文档)
监听通知栏消息(支持白名单、黑名单、过滤) Ba-NotifyListener(文档)
全局置灰、哀悼置灰(可动态、同时支持nvue、vue) Ba-Gray(文档)
获取设备唯一标识(OAID、AAID、IMEI等) Ba-IdCode(文档)
实时定位(系统、后台运行、支持息屏)插件 Ba-Location(文档)
实时定位(高德、后台运行、支持息屏、坐标转换、距离计算) Ba-LocationAMap(文档)
窗口小工具、桌面小部件、微件 Ba-AppWidget(文档)
窗口小工具、桌面小部件、微件(日历、时间) Ba-AwCalendarS(文档)
悬浮窗(在其他应用上层显示) Ba-FloatWindow(文档)
悬浮窗(应用内、无需授权) Ba-FloatWindow2(文档)
悬浮窗(悬浮球、动态菜单、在其他应用上层显示) Ba-FloatBall(文档)
添加到“用其他应用打开”中,用于文件传递、分享等 Ba-ShareReceive(文档)

                                                                    
                                                                        收藏人数:
                                    
                                                        购买(
                                                                                                                试用
                                                    
                                            使用 HBuilderX 导入示例项目
                                        
                                        赞赏(1)
                                    
                                            
                                            
                                            
                                            
                                            
 下载 13531
                
 赞赏 6
                
            
                    下载 12286 
                
            
            
            
            
            
            
            
            
            
            
                        赞赏 7 
                    
            
            
            
            
                        
                                赞赏
            
京公网安备:11010802035340号