关于javascript:uniapp-PDA广播扫码

16次阅读

共计 1553 个字符,预计需要花费 4 分钟才能阅读完成。

uniapp 监听 PDA 扫描工具数据

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

附带一张扫描工具样子:

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,
};

正文完
 0