更新记录
1.0.0(2026-08-12) 下载此版本
更新记录
本插件所有显著变更均记录于此文件。
格式遵循 Keep a Changelog, 版本号遵循 语义化版本。
[1.0.0] - 2026-08-10
新增
- 将海康 DS-MDT201 广播扫码能力封装为 UTS 插件(
uni_modules/pda-scan-ds-mdt201),替代原有 App 原生语言插件(AAR)形态,满足插件市场上架要求。 - 提供
startScan、stopScan、startListening、stopListening、configure、emitTestEvent、getConfiguration等前端可导入的 API。 - 扫码结果与状态通过
@UTSJS.keepAlive持续回调推送给前端,不再依赖uni.requireNativePlugin与plus.globalEvent。 - 支持通过
resultAction、resultDataKey配置覆盖默认的扫码结果广播与条码字段。 - 兼容 Android 13(API 33)动态注册广播接收器的
RECEIVER_EXPORTED要求。 - 声明
minSdk = 21,支持 uni-app(vue2 / vue3)与 uni-app x。
变更
- 前端调用方式由
uni.requireNativePlugin("PdaScan")调整为import { ... } from "@/uni_modules/pda-scan-ds-mdt201"。 - 扫码结果事件由
plus.globalEvent的PdaScan.onScanResult/PdaScan.onStatus调整为 startScan / startListening 的持续回调参数。
平台兼容性
uni-app(5.14)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | × | 10.0 | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.14)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | 10.0 | × | × | × |
pda-scan-ds-mdt201(海康 DS-MDT201 广播扫码)UTS 插件
将海康 DS-MDT201 的广播扫码能力封装为 uni-app UTS 插件。插件通过注册 Android 广播接收器监听扫码结果广播,并将条码通过持续回调推送给前端。
- 支持 uni-app(vue2 / vue3)与 uni-app x
- 仅支持 Android 平台,
minSdk = 21(Android 5.0) - 实际功能应在配有海康扫描硬件的 PDA 上调用
安装
- 将本目录(
uni_modules/pda-scan-ds-mdt201)复制到 uni-app 项目的uni_modules/目录下。 - 使用 HBuilderX 打开项目,运行到手机或模拟器运行需要先制作自定义调试基座;正式打包使用云打包即可。
UTS 插件目前仅支持通过 HBuilderX 创建和使用,不支持 cli 方式。
快速开始
import {
startScan,
stopScan,
startListening,
configure,
emitTestEvent,
getConfiguration,
} from "@/uni_modules/pda-scan-ds-mdt201";
启动扫码
startScan(
{
resultAction: "android.intent.ACTION_SCAN_OUTPUT",
resultDataKey: "barcode",
},
(res) => {
if (res.type === "scan") {
console.log("条码:", res.barcode);
} else if (res.type === "status") {
console.log("扫码状态:", res.status);
} else if (res.type === "error") {
console.error("扫码错误:", res.code, res.message);
}
},
);
回调会先收到一次 status = "started",之后每次扫码收到 type = "scan" 事件。该回调为持续回调,可被多次调用;停止监听后自动失效。
停止扫码控制
仅发送停止扫码控制广播(让硬件停止扫描),不会注销接收器、不会清空回调:
stopScan((res) => {
console.log("已发送停止扫码指令:", res.status);
});
停止监听
注销扫码结果广播接收器并清空持续回调,不会发送停止扫码控制广播:
stopListening((res) => {
console.log("已停止监听:", res.isListening);
});
通常页面销毁时调用 stopListening 释放监听,需要硬件停止扫描时再配合 stopScan。
仅监听(扫描枪由硬件按键触发)
如果扫描枪已由硬件按键或其他组件触发,可只注册接收器而不发送开始扫码控制广播:
startListening(
{
resultAction: "android.intent.ACTION_SCAN_OUTPUT",
resultDataKey: "barcode",
},
(res) => {
console.log("监听事件:", res);
},
);
更新配置
configure(
{
resultAction: "android.intent.ACTION_SCAN_OUTPUT",
resultDataKey: "barcode",
},
(res) => {
console.log("当前配置:", res);
},
);
测试事件
emitTestEvent((res) => {
console.log("测试事件:", res.barcode); // PDA_SCAN_EVENT_TEST
});
emitTestEvent 会推送一次 PDA_SCAN_EVENT_TEST 测试条码,用于验证 UTS 到前端的链路;验证后不要将它作为实际扫码流程使用。
获取配置
const cfg = getConfiguration();
console.log(cfg.resultAction, cfg.resultDataKey, cfg.isListening);
事件结构
所有回调参数均为 PdaScanEvent:
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | scan(扫码结果)/ status(状态)/ error(错误) |
| barcode | string | undefined | 扫码结果条码,type = "scan" 时存在 |
| status | string | undefined | started / stopped / listening,type = "status" 时存在 |
| code | string | undefined | 错误码,type = "error" 时存在 |
| message | string | undefined | 错误信息,type = "error" 时存在 |
| resultAction | string | 当前扫码结果广播 action |
| resultDataKey | string | 当前条码字段 key |
| isListening | boolean | 是否正在监听广播 |
| isTest | boolean | 是否为测试事件 |
设备配置
设备端需开启广播输出模式。默认结果广播为 android.intent.ACTION_SCAN_OUTPUT,条码字段为 barcode;如实机配置不同,在 startScan、startListening 或 configure 中传入 resultAction、resultDataKey 覆盖。
注意事项
- Android 13+(API 33)动态注册广播接收器必须声明
RECEIVER_EXPORTED,插件已处理。 - 插件不申请额外权限;
ACTION_SCAN_START/ACTION_SCAN_STOP控制广播由海康设备端处理。

收藏人数:
https://github.com/umbrella22/hikvision-pdascan
下载插件并导入HBuilderX
赞赏(0)
下载 1
赞赏 0
下载 12501813
赞赏 1941
赞赏
京公网安备:11010802035340号