更新记录
1.0.0(2026-10-21)
1:发布扫码UTS插件,精简API
平台兼容性
uni-app(3.8.6)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | 5.0 | 1.0.0 | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.0)
| Chrome | Safari | Android | Android插件版本 | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | × | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
极简的通用安卓扫码插件
1. 简介
本插件为仅支持安卓平台的PDA原生插件。它基于PDA的扫码软件,接受PDA扫码的广播信息,然后发送到业务代码里。
目前已经测试主流的PDA,包括东集、idata、斑马、商米、思必拓、汉德霍尔、优博讯等产品,理论上兼容市面上所有PDA。
请先使用测试程序按照下图进行测试:
下载测试程序地址1:http://8.147.128.38/download/testScan.apk
下载测试程序地址2:http://www.99magician.xyz:81/download/testScan.apk
如果PDA为东集、idata、斑马、商米、思必拓、汉德霍尔、优博讯品牌。可以直接按扫码键测试。
如果为非以上品牌,需要在页面上输入与内置扫码软件一致的“广播动作”、“数据标签”进行设置。
注意::: 斑马PDA直接修改“DataWedge”中的“Profile0(default)”配置文件,将“intent输出”启用,同时将“intent操作”设置为"com.symbol.datawedge.DWDEMO",将“intent类别”设置为空。"Intent交付"改为"广播 Intent"
2. 使用流程
- 检查PDA的扫码设置,需要将输出方式设置为intent输出。

- 设置intent的广播动作、广播字符串数据标签

- 编写相应代码,参考示例代码
- 扫码获取结果
- 插件已经内置广播动作、数据标签的PDA品牌如下: 东集、idata、斑马、商米、思必拓、汉德霍尔、优博讯
- 插件已经内置扫码事件为"getScanData"
3. 示例代码
<template>
<view>
<view>
<view>广播动作:<input v-model.trim="action" placeholder="请输入扫码设置里的广播动作"></view>
<view>数据标签:<input v-model.trim="label" placeholder="请输入扫码设置里的广播字符串数据标签"></view>
<view style="text-align: center;">
<button type="primary" @click="setup" style="width:100px;">设置</button>
<button type="warn" @click="remove" style="width:100px;">移除</button>
</view>
</view>
<view>初始化状态: {{inited ? '已注册' : '未注册'}}</view>
<view>接收到信息次数: {{count}}</view>
<view>接收到最新信息:</view>
<view>{{msg}}</view>
</view>
</template>
<script>
// 引入 UTS 扫码插件(插件 ID:ammagician-uts-scan)
import { init, addScanAction, removeScanAction, onScanCallback, offScanCallback, stop } from '@/uni_modules/ammagician-uts-scan'
export default {
data() {
return {
count: 0,
msg: '',
action: '',
label: '',
inited: false
}
},
onLoad() {
// 初始化:注册内置品牌 PDA 的广播监听(需自定义调试基座)
this.inited = init()
// 注册扫码回调,可多次触发
onScanCallback(this.scanCallback)
},
onUnload() {
// 移除回调并注销广播接收器
offScanCallback()
stop()
},
methods: {
// 设置:添加自定义扫码 Action
setup() {
if (!this.action) {
uni.showToast({ title: '请输入广播动作', icon: 'none' })
return
}
if (!this.label) {
uni.showToast({ title: '请输入数据标签', icon: 'none' })
return
}
addScanAction(this.action, this.label)
uni.showToast({ title: '已设置', icon: 'none' })
},
// 移除:移除自定义扫码 Action
remove() {
if (this.action) {
removeScanAction(this.action)
}
uni.showToast({ title: '已移除', icon: 'none' })
},
// 扫码结果回调
scanCallback(data) {
this.count++
this.msg = data && data.code ? data.code : ''
}
}
}
</script>
4. 最佳实践
创建工具类,scanUtil.js
import { init, addScanAction, removeScanAction, onScanCallback, offScanCallback, stop } from '@/uni_modules/ammagician-uts-scan'
//init()初始化内置品牌PDA广播参数、默认扫码事件
// 如果PDA为东集、idata、斑马、商米、思必拓、汉德霍尔、优博讯之外的牌子,需要设置扫码广播参数
//addScanAction("android.intent.ACTION_DECODE_DATA","barcode_string") //添加扫码action, 此两值需要同扫码软件的配置一致
//removeScanAction("android.intent.ACTION_DECODE_DATA") //移除扫码action
//onScanCallback((res)=>{}) //初始化扫码监听函数
//offScanCallback() //移除扫码监听函数
//stop() //清理插件内部ScanAction,事件。需要重新调用init、onScanCallback
const listeners = {}
let isStart = false
//注册事件
export const addListener = function(name, method){
listeners[name] = method
}
//移除事件
export const removeListener = function(name){
delete listeners[name]
}
export const clearListener = function(name){
listeners = {};
}
//停止插件,重新开启需要执行init
export const start = function(){
if(isStart){
return
}
init();
//如果没有内置Action,需要在此添加
//addScanAction("android.intent.ACTION_DECODE_DATA","barcode_string") //添加扫码action, 此两值需要同扫码软件的配置一致
onScanCallback((res)=>{
for(var a in listeners){
listeners[a](res)
}
})
isStart = true
}
//停止插件,重新开启需要执行start
export const destory = function(){
stop();
isStart = false
}
</script>
页面A
<template>
<div>
<div>接收到信息次数: {{count}}</div>
<div>接收到最新信息:</div>
<div>{{msg}}</div>
</div>
</template>
<script>
import {start, destory, addListener, removeListener, clearListener} from './scanUtil.js';
export default {
data() {
return {
count: 0,
msg: ''
}
},
mounted() {
//启动插件
start();
//在当前页面注册扫码事件
addListener("scanForA", this.scanCallback)
},
beforeUnmount(){
//移除当前页面扫码事件
removeListener("scanForA")
//移除所有的扫码监听事件。
//clearListener()
//停止插件, 重新开启需要执行start
//destory()
},
methods:{
scanCallback(data){
this.count++;
this.msg = data.code
}
}
}
</script>
5. 联系方式
需要咨询的朋友也可以添加作者企鹅:壹壹玖贰玖陆零柒玖捌。或者***: 壹伍捌壹肆零叁贰玖陆玖,获得更快捷的服务支持。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 178
赞赏 0
下载 12701258
赞赏 1956
赞赏
京公网安备:11010802035340号