更新记录

1.3(2026-07-17)

新增功能

  • 动态切换摄像头
  • 本地图片识别
  • 运行时动态改配置
  • 关闭扫码页
  • 扫码结果支持返回码制
  • 其他

1.2(2025-04-03)

支持更多参数(参照Ba-ScanView2

1.1(2024-01-24)

扫码识别优化

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 16.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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-ScanViewH

简介

Ba-ScanViewH 是一款集成华为统一扫码服务的插件,同时支持 component 组件模式module 跳转扫码页;组件可直接在 uniapp 界面引用,高宽可随意设置;支持抓拍、切换摄像头、本地识图、码制回传等。

  • component 组件模式,可直接在 uniapp 界面引用,高宽可随意设置
  • module 跳转全屏扫码页 / 华为官方扫码页
  • 支持连续扫码,可设置时间间隔
  • 支持多码选择、多码直接返回
  • 支持设置扫码格式
  • 支持打开、关闭闪光灯
  • 支持相册图片识别、本地路径识图 onImgReg
  • 支持关闭和打开扫描、开关摄像头
  • 支持切换前后摄像头
  • 支持拍照、缩放
  • 支持运行时更新配置 updateOptions
  • 扫码结果支持返回码制(scanType)
  • 同时支持 vue2 和 vue3

注意:原生组件请使用 nvue


支持定制,有建议和需要,请联系QQ:2579546054

也可关注博客,实时更新最新插件

uniapp 常用原生插件大全

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

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

扫码原生插件 - 组件版(毫秒级、连续扫码、多码、相册)Ba-ScanView

扫码原生插件 - 组件版(毫秒级、连续扫码、多码、相册、新增支持拍照)Ba-ScanView2

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


一、组件模式(nvue)

使用方法(示例)

template 中直接引用:

<Ba-ScanViewH ref="scanViewH" style="height: 200;width: 100%;" :load="loadData" @onScan="onScan">
</Ba-ScanViewH>

script 中调用:

export default {
    data() {
        return {
            loadData: {
                scanTimeSpace: 1000,
                isShowToast: true,
                isDirScanMulti: true,
                isFacingFront: false
            }
        }
    },
    onLoad() {
        // 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(e.detail.result);
            console.log(e.detail.results);
            console.log(e.detail.scanType, e.detail.scanTypeNames);
        },
        switchCamera() {
            this.$refs.scanViewH.switchCamera({}, res => {
                console.log(res);
            });
        },
        onImgReg() {
            uni.chooseImage({
                count: 1,
                success: (res) => {
                    this.$refs.scanViewH.onImgReg({
                        path: res.tempFilePaths[0]
                    }, ret => {
                        console.log(ret);
                    });
                }
            });
        },
        updateOptions() {
            this.$refs.scanViewH.updateOptions({
                scanTimeSpace: 3000,
                isShowVibrate: false,
                isShowBeep: false,
                isDirScanMulti: false
            }, res => {
                console.log(res);
            });
        }
    }
}

load 配置参数

属性名 类型 默认值 说明
isShowVibrate Boolean true 扫描完成震动
isShowBeep Boolean true 扫描完成声音
scanTimeSpace int 1000 连续扫描时间间隔,单位毫秒
isShowToast Boolean true 扫码成功是否 toast 提示
barcodeFormats Array 扫码格式,支持多个,默认所有。如:["QR Code", "Code 128"]
scanColor String #00FF00 扫描线颜色(组件默认绿)
hintText String 扫二维码/条形码 提示文案
hintTextColor String #FF0000 提示文案颜色
hintTextSize Number 14 提示文案字体大小
isDirScanMulti Boolean false 是否直接返回多码(false 时弹窗点选)
rpCancelBtnText String 取消 多码取消按钮文本
isFacingFront Boolean false 是否使用前置摄像头
isFacingExternal Boolean false 是否使用外置摄像头
zoom Boolean false 是否支持手势缩放
scanGrid Boolean false 扫描线是否网格样式
scanImage Boolean false 扫描线是否图片样式
bgColor String 扫描框背景色
gridScanLineColumn Number 30 网格扫描线列数
gridScanLineHeight Number 300 网格高度
isSaveScanImg Boolean false 是否保存扫码成功照片
isSaveFullScanImg Boolean false 是否保存全摄像头扫码照片
isToastImgFail Boolean true 相册识别失败是否 toast
perTipTitle String 权限说明 相机权限说明标题
perTipMsg String 相机权限说明内容
lightOnText String 轻触关闭 闪光灯开启文案
lightOffText String 轻触照亮 闪光灯关闭文案
resultPointColor String 多码锚点颜色
resultPointStrokeColor String 多码锚点描边颜色
resultPointWithdHeight Number 0 多码锚点宽高(dp)
resultPointCorners Number 0 多码锚点圆角
resultPointStrokeWidth Number 0 多码锚点描边宽度

说明:组件嵌在页面中默认持续扫码,scanTimeSpace 控制两次识别间隔。组件侧 isContinuous 配置不改变该行为;连续/单次主要用在 Module 的 onScan

支持的扫码格式 barcodeFormats
  • 线性格式:Codabar、Code 39、Code 93、Code 128、EAN-8、EAN-13、ITF14、UPC-A、UPC-E
  • 2D 格式:Aztec、Data Matrix、PDF417、QR code / QR Code

组件方法

方法名 说明
openScanLight 打开闪光灯
closeScanLight 关闭闪光灯
isLightOn 是否打开闪光灯
openAlbumPage 打开相册识别
openScan 开启扫描识别
closeScan 关闭扫描识别
isScanOpen 是否开启扫描
openCamera 打开摄像头
closeCamera 关闭摄像头(可传遮罩色)
switchCamera 切换摄像头
isFacingFront 查询当前是否前置
onImgReg 本地图片路径识别
updateOptions 运行时更新配置
zoomTo 设置缩放比例
takePhoto 拍照(预览帧裁剪)
takePicture 拍照(ImageCapture)

switchCamera

切换摄像头。不传参数则前后互换;可指定前置/后置。

// 互换
this.$refs.scanViewH.switchCamera({}, res => {});
// 指定前置
this.$refs.scanViewH.switchCamera({ isFacingFront: true }, res => {});
属性名 类型 必填 说明
isFacingFront Boolean true 前置,false 后置;不传则互换

返回:okmsgdata.isFacingFront


isFacingFront

this.$refs.scanViewH.isFacingFront(res => {
    console.log(res.isFacingFront);
});

onImgReg

本地图片识别(成功会同时触发 @onScan / baScanViewEvent)。

this.$refs.scanViewH.onImgReg({ path: tempPath }, res => {
    console.log(res);
});
属性名 类型 必填 说明
path String 本地图片路径(如 chooseImage 返回路径)

updateOptions

运行时更新部分配置,无需重建组件。

属性名 类型 说明
isDirScanMulti Boolean 是否直接返回多码
scanTimeSpace Number 连续扫描间隔(毫秒)
isShowVibrate Boolean 震动
isShowBeep Boolean 蜂鸣

zoomTo

属性名 类型 默认值 说明
ratio Number 1 缩放比例,1.0 无缩放,>1 放大,<1 缩小(支持浮点)

openCamera / closeCamera

this.$refs.scanViewH.openCamera(res => {});
this.$refs.scanViewH.closeCamera(res => {}, { bgColor: '#000000' });
属性名 类型 说明
bgColor String 关闭摄像头后的遮罩颜色,默认 #000000

takePhoto / takePicture

属性名 类型 必填 默认值 说明
path String 应用私有目录 temp.jpg 保存路径
isFull Boolean false 是否全图;false 时裁剪为预览区域
zoom Number 0 裁剪时缩放参数

返回:pathstatus


组件扫码回调 onScan / baScanViewEvent

detail 字段:

属性名 类型 说明
result String 第一个码值
results String 码值数组的 JSON 字符串
scanType Number 第一个码制(华为 HmsScan 类型值)
scanTypes String 码制数组的 JSON 字符串
scanTypeNames String 码制名称数组的 JSON 字符串,如 ["QR code"]

另有存图事件:@onSaveImg / 全局事件 baScanViewEvent_SaveImg(开启 isSaveScanImg 时)。


二、Module 模式(跳转扫码页)

const scanViewH = uni.requireNativePlugin('Ba-ScanViewH')

方法列表

方法名 说明
onScan 跳转自研全屏扫码页
onScanH 跳转华为官方扫码页
onImgReg 不进页面,直接本地识图
onClose 关闭当前全屏扫码页(连续扫时常用)

onScan

scanViewH.onScan({
    isContinuous: true,
    scanTimeSpace: 3000,
    barcodeFormats: ['QR Code'],
    hintText: '连续扫码'
}, res => {
    console.log(res);
});

常用参数(与组件 load 类似,另增):

属性名 类型 默认值 说明
isContinuous Boolean false 是否连续扫描;false 扫完关页回传,true 留在扫码页继续扫
isShowPhotoAlbum Boolean true 是否显示相册按钮
isShowLightController Boolean true 是否显示闪光灯按钮
isFacingFront Boolean false 前置摄像头
isFacingExternal Boolean false 外置摄像头
zoom Boolean false 手势缩放

成功回调示例:

{
  "ok": true,
  "code": "success",
  "isImg": false,
  "result": "xxx",
  "results": ["xxx"],
  "scanType": 256,
  "scanTypes": [256],
  "scanTypeNames": ["QR code"]
}

失败 / 取消:

{ "ok": false, "code": "failed", "msg": "..." }
{ "ok": false, "code": "cancle" }

连续扫 isContinuous: true 时,结果通过回调持续返回;可用 onClose 主动关闭页面。


onScanH

华为官方扫码界面。

scanViewH.onScanH({
    viewType: 1,
    barcodeFormats: ['QR code', 'Data Matrix']
}, res => {
    console.log(res);
});
属性名 类型 说明
viewType Number 0:扫描二维码/条码;1:扫描二维码(默认 1)
barcodeFormats Array 可选,限制码制

成功:okcode=successresultscanTypescanTypeName
取消:ok=falsecode=cancle


onImgReg

不打开扫码页,直接识别本地图。

uni.chooseImage({
    count: 1,
    success(res) {
        scanViewH.onImgReg({
            path: res.tempFilePaths[0],
            barcodeFormats: ['QR Code']
        }, ret => {
            console.log(ret);
        });
    }
});

成功回调含:okcodeisImgresultresultsscanTypescanTypesscanTypeNames


onClose

关闭 Module onScan 打开的扫码页。

scanViewH.onClose(res => {
    console.log(res);
});

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件(多种样式,新增支持常驻通知模式) Ba-Notify文档

自定义通知(耳机电量)插件 Ba-NotifyEarphone文档

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

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

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

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

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

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

安卓保活插件(采用多种主流技术) Ba-KeepAlive文档

安卓保活套装(通用、常驻通知、电池优化、自启管理、后台运行等)文档

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

自定义图片水印(任意位置) Ba-Watermark文档

最接近微信的图片压缩插件 Ba-ImageCompressor文档

视频压缩、视频剪辑插件 Ba-VideoCompressor文档

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

原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast文档

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

pdf阅读(手势缩放、显示页数) Ba-Pdf文档

声音提示、震动提示、语音播报 Ba-Beep文档

websocket原生服务(自动重连、心跳检测) Ba-Websocket文档

短信监听(验证码) Ba-Sms文档

智能安装(自动升级) Ba-SmartUpgrade文档

监听系统广播、自定义广播 Ba-Broadcast文档

监听通知栏消息(支持白名单、黑名单、过滤) Ba-NotifyListener文档

全局置灰、哀悼置灰(可动态、同时支持nvue、vue) Ba-Gray文档

获取设备唯一标识(OAID、AAID、IMEI等) Ba-IdCode文档

实时定位(系统、后台运行、支持息屏)插件 Ba-Location文档

实时定位(高德、后台运行、支持息屏、坐标转换、距离计算) Ba-LocationAMap文档

窗口小工具、桌面小部件、微件 Ba-AppWidget文档

窗口小工具、桌面小部件、微件(日历、时间) Ba-AwCalendarS文档

画中画悬浮窗(视频) Ba-VideoPip文档

悬浮窗(在其他应用上层显示) Ba-FloatWindow文档

悬浮窗(应用内、无需授权) Ba-FloatWindow2文档

悬浮窗(悬浮球、动态菜单、在其他应用上层显示) Ba-FloatBall文档

添加到“用其他应用打开”中,用于文件传递、分享等 Ba-ShareReceive文档

获取地图数据(高德、地理编码、反地理编码) Ba-AMapData文档

来电显示悬浮窗插件(支持锁屏) Ba-CallerID文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.CAMERA

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: