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

此处附带PDA拍照的坑的文章:https://blog.csdn.net/ZhouLoverBrother/article/details/114832566?spm=1001.2014.3001.5502

你可能感兴趣的:(APP功能相关,uniapp,uni-app,app,pda)