uniapp 实现扫码枪自带条码读取

监听扫码枪广播事件源码:

class pdaScan {
	constructor(onReceive){
		this.main
		this.filter
		this.receiver
		this.init(onReceive)
		this.start = this.start
		this.stop = this.stop
	}
	/**  剩余下个变量已经做了全局变量
	 * 
	 * 定义广播
	 * that:传this;
	 */
	init(onReceive){
		/* #ifdef APP-PLUS */
		//获取activity
		this.main = plus.android.runtimeMainActivity();
		const IntentFilter = plus.android.importClass('android.content.IntentFilter');
		this.filter = new IntentFilter();
		// 扫描设置的广播名称 每种PDA可能不同
		// filter.addAction("com.android.server.scannerservice.broadcast");
		this.filter.addAction("com.scanner.broadcast");
		this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
			onReceive: (context, intent) => {
				plus.android.importClass(intent);
                // 查询来源于哪个广播的名称 const action = intent.getAction() 
				// 扫描设置的开发者选项--键值名称 每种PDA可能不同
				const code = intent.getStringExtra("data");
				// 业务
				//到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果    return出code进行业务处理
				onReceive && onReceive(code);
			}
		});
		/* #endif */
	}
	start(){
		/* #ifdef APP-PLUS */
		this.main.registerReceiver(this.receiver, this.filter);
		/* #endif */
	}
	stop(){
		/* #ifdef APP-PLUS */
		this.main.unregisterReceiver(this.receiver);
		/* #endif */
	}
}
export default pdaScan

组件使用时的源码:

onLoad(option) {
	this.pdaObj = new pdaScan(collback)	 // 回调函数会获得识别后的结果
},
onUnload() {
	this.pdaObj.stop()
},
onHide() {
	this.pdaObj.stop()
},
onShow() {
	this.pdaObj.start()
},

pda机器设置:
在机器上找到设置-->广播设置--> 自定义广播名称改成:com.scanner.broadcast

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值