uniapp PDA广播扫码

uniapp 监听PDA扫描工具数据

1、需求是:App监听东大PDA内置的扫描工具,通过扫描工具扫描条码,把数据自动赋值在input输入框,无需手动设置或者调用uniapp的uni.scanCode({})去赋值
2、这里声明下,在封装的JS里面,你需要知道你的PDA的广播动作,键值称,去设置后,才能对应生效,我这边是东大的出厂设置
3、调用的代码已经封装成js,直接去复制调用即可,感觉能解决了问题的,动动小指头点个赞~ O(∩_∩)O

附带一张扫描工具样子:
uniapp PDA广播扫码_第1张图片

A、页面上的调用如下:

import { websocetObj } from '@/utils/websocet/websocet.js';

  methods:{
  getScancode(code){
            this.config =code
        }
  },

    onLoad() {
     //init传入一个回调函数做参数,在扫描的时候会将数据传入这个方法里,然后在处理你的业务逻辑
        broadcastScan.init(this.getScancode);
    },
    onUnload() {
        broadcastScan.stop();
    },
    onHide() {
        broadcastScan.stop();
    },
    onShow() {
        broadcastScan.start();
    }

B、创建一个js文件,复制以下代码。

let main;
let filter;
let receiver;
let tag = false;
/**
 * 开始广播监听扫码
 * that:传this;
 */
const start = () => {
    /* #ifdef APP-PLUS */
    main.registerReceiver(receiver, filter);
    /* #endif */
}


/**
 * 停止广播监听扫码
 * that:传this;
 */
const stop = () => {
    /* #ifdef APP-PLUS */
    main.unregisterReceiver(receiver);
    /* #endif */
}


/**  剩余下个变量已经做了全局变量
 * 
 * 定义广播
 * that:传this;
 */
const init = (onReceive) => {
    /* #ifdef APP-PLUS */
    //获取activity
    main = plus.android.runtimeMainActivity();
    const IntentFilter = plus.android.importClass('android.content.IntentFilter');
    filter = new IntentFilter();
    // 扫描设置的广播名称
    filter.addAction("com.android.server.scannerservice.broadcast");
    receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
        onReceive: function(context, intent) {
            plus.android.importClass(intent);
            // 扫描设置的开发者选项--键值名称 scannerdata
            const code = intent.getStringExtra("scannerdata");
            // 业务
            //防重复
            if (tag) return;
            tag = true;
            setTimeout(function() {
                tag = false;
            }, 150);
            //到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果    return出code进行业务处理
            onReceive && onReceive(code);
        }
    });
    /* #endif */

}

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

你可能感兴趣的:(uniapp PDA广播扫码)