news 2026/4/29 1:47:23

uniapp+pda实现广播读取扫码数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uniapp+pda实现广播读取扫码数据

2026.04.28今天我学习了如何使用pda进行广播读取扫码数据

一、通用组件

pda-scan.js

let mainActivity; // 运行时的主要活动activity let intentFilter; // 实例化的意图过滤器 let broadcastReceiver; // 广播接收器 let repeatFlag = false; // 初始化定义广播 const init = (onReceiveCallback) => { /* #ifdef APP-PLUS */ if (typeof plus === 'undefined') { console.log('plus对象未准备好,无法初始化PDA扫描'); return; } try { mainActivity = plus.android.runtimeMainActivity(); const IntentFilter = plus.android.importClass('android.content.IntentFilter'); intentFilter = new IntentFilter(); intentFilter.addAction("android.intent.ACTION_DECODE_DATA");//不同pds设备需要修改的地方 // 这里的 onReceive 就是文档里的 doReceive 函数 broadcastReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function (context, intent) { // ✅ 文档里的关键代码:导入intent类 + 取barcode_string plus.android.importClass(intent); var barcodeStr = intent.getStringExtra("barcode_string");//不同pds设备需要修改的地方 console.log('✅ 扫码成功,结果:', barcodeStr); // 防重复 if (repeatFlag) return; repeatFlag = true; setTimeout(() => repeatFlag = false, 150); // 把结果传给业务回调 onReceiveCallback && onReceiveCallback(barcodeStr); } }); setScannerMode(0); // 扫码模式设置(之前加的) console.log('PDA扫描初始化成功'); } catch (error) { console.log('PDA扫描初始化失败:', error); } /* #endif */ }; // ------------------------------ // ✅ 新增:设置PDA扫码模式(你文档里的功能) // mode: 0=自动模式 1=连扫模式 2=手动模式 // ------------------------------ const setScannerMode = (mode = 0) => { /* #ifdef APP-PLUS */ try { const Intent = plus.android.importClass("android.content.Intent"); const intent = new Intent("com.android.broadcast.uscanner.settings"); // 文档固定写法 intent.putExtra("keyInt", -13); intent.putExtra("valueInt", mode); mainActivity.sendBroadcast(intent); console.log(`✅ 已设置PDA扫码模式:${mode === 0 ? '自动模式' : mode === 1 ? '连扫模式' : '手动模式'}`); } catch (e) { console.log("设置扫码模式失败", e); } /* #endif */ }; // 开始广播监听扫码 const start = () => { /* #ifdef APP-PLUS */ if (!mainActivity || !broadcastReceiver) return; try { mainActivity.registerReceiver(broadcastReceiver, intentFilter); console.log('PDA扫描监听已开始'); } catch (error) { console.log('开始监听失败', error); } /* #endif */ }; // 停止广播监听扫码 const stop = () => { /* #ifdef APP-PLUS */ try { mainActivity && broadcastReceiver && mainActivity.unregisterReceiver(broadcastReceiver); } catch (error) { } /* #endif */ }; // 主动触发扫描 const triggerScan = () => { /* #ifdef APP-PLUS */ try { let Intent = plus.android.importClass("android.content.Intent"); let intent = new Intent("com.scan.onStartScan"); mainActivity.sendBroadcast(intent); } catch (error) { } /* #endif */ }; export const broadcastScan = { init, start, stop, triggerScan, setScannerMode, // 导出,外面也可以调用 };

二、页面使用

<template> <view></view> </template> <script> import {broadcastScan} from '../../utils/pda-scan'; export default{ data(){ }, onLoad(){ broadcastScan.init(this.get_scan_code);//初始pda设备 broadcastScan.setScannerMode(2);//手动模式 }, onShow() { broadcastScan.start(); }, onUnload() { broadcastScan.stop(); }, onHide() { broadcastScan.stop(); }, methods:{ get_scan_code(code) { console.log(code,'扫描成功的值') }, } } </script>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 1:47:22

2026 年 4 类人像抠图工具 vs 微信小程序方案,免费人像抠图工具怎么选

做电商主图的时候经常卡在抠图这一步&#xff0c;背景杂乱、发丝边缘处理不干净、为了抠一张图还得打开电脑装软件。更头疼的是&#xff0c;很多工具对新用户只给几次免费试用&#xff0c;用完就得付费。这两年在手机端处理图片的需求越来越多&#xff0c;我逐渐把大部分日常抠…

作者头像 李华
网站建设 2026/4/29 1:46:24

eNSP_DHCP配置

一、拓扑图网络拓扑需包含以下元素&#xff1a;PC1&#xff08;DHCP客户端&#xff09;路由器&#xff08;含DHCP服务功能&#xff09;连接线路&#xff08;确保接口对应关系正确&#xff09;二、基础配置PC1配置 启用DHCP获取IP地址&#xff1a;路由器配置配置路由器接口IP并启…

作者头像 李华
网站建设 2026/4/29 1:34:59

FigmaCN:专业级中文界面优化方案的设计工具适配器

FigmaCN&#xff1a;专业级中文界面优化方案的设计工具适配器 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 对于中文设计师而言&#xff0c;Figma作为全球领先的协作设计平台&#xf…

作者头像 李华
网站建设 2026/4/29 1:33:02

docker无权限

把当前用户加入 docker 用户组 sudo usermod -aG docker "$USER"

作者头像 李华