pda广播扫码

本文介绍了如何在PDA设备上使用广播功能,解决当需要在不聚焦输入框的情况下进行扫码的问题,通过封装`pdaScanCode.js`和在`main.js`中集成,实现在页面多个输入框间灵活切换扫描操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pda扫码默认只要光标聚焦到输入框扫描到的值就会自动填充到输入框中。但是有些场景并不适用,例如:同一个页面有多个输入框或者需求要求不聚焦到输入框就能扫描,此时就不符合实际业务场景了。这时,可以用广播扫码来实现,它不需要光标聚焦。

一、查看pda的广播动作和数据标签

每个品牌pda的广播动作和数据标签查看方式不同,我这里是(海康威视)pda,后面代码中需要用到

查看方式:pda自带的app 扫码工具 --- 输出配置 --- 输出模式

二、封装扫描工具类pdaScanCode.js

let main;
let filter;
let receiver;
let tag = false;
/**
 * 开始广播监听扫码
 */
const start = () => {
  main.registerReceiver(receiver, filter);
};

/**
 * 停止广播监听扫码
 */
const stop = () => {
  main.unregisterReceiver(receiver);
};

/**  剩余下个变量已经做了全局变量
 *
 * 定义广播
 * that:传this;
 */
const init = (onReceive) => {
  console.log("--------初始化广播扫码");
  //获取activity
  main = plus.android.runtimeMainActivity();
  const IntentFilter = plus.android.importClass("android.content.IntentFilter");
  filter = new IntentFilter();
  // 扫描设置的广播动作 改成自己pda的广播动作 android.intent.ACTION_SCAN_OUTPUT
  filter.addAction("android.intent.ACTION_SCAN_OUTPUT");
  receiver = plus.android.implements(
    "io.dcloud.feature.internal.reflect.BroadcastReceiver",
    {
      onReceive: (context, intent) => {
        plus.android.importClass(intent);
        // 改成自己pda的数据标签 barcode
        const code = intent.getStringExtra("barcode");
        // 业务
        //防重复
        if (tag) return;
        tag = true;
        setTimeout(() => {
          tag = false;
        }, 150);
        //到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果    return出code进行业务处理
        onReceive && onReceive(code);
      },
    }
  );
};

export const broadcastScan = {
  init,
  start,
  stop,
};

三、在main.js中,将broadcastScan挂在到原型链上

三、使用

onLoad: function(option) {
  //init传入一个回调函数做参数,在扫描的时候会将数据传入这个方法里,然后在处理你的业务逻辑
  this.$broadcastScan.init(this.getScancode);
},
onUnload() {
  this.$broadcastScan.stop();
},
onHide() {
  this.$broadcastScan.stop();
},
onShow() {
  this.$broadcastScan.start();
},
methods: {
  getScancode(code) {
    console.log(code, '------------------pda硬件扫码值');
  }
}

这世界很喧嚣,做你自己就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值