uniap实现监听优博讯红外扫码广播【组件篇】

创建【scanCode.vue】文件

核心代码如下:

<template>
	<view></view>
</template>

<script>
let _httpLoading = false
export default {
	data() {
		return {
			main: null,
			receiver: null,
			intentFilter: null
		}
	},
	created() {
		this.initScan()
		this.startScan();
	},
	onHide() {
		this.stopScan();
	},
	destroyed() {
		//页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果/
		this.stopScan();
	},
	methods: {
		initScan() {
			let _this = this;
			this.main = plus.android.runtimeMainActivity(); //获取主activity
			var IntentFilter = plus.android.importClass('android.content.IntentFilter');
			this.intentFilter = new IntentFilter();
			this.intentFilter.addAction('android.intent.ACTION_DECODE_DATA') // 广播动作
			this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
				onReceive: function (context, intent) {
					plus.android.importClass(intent);
					let code = intent.getStringExtra('barcode_string'); // 广播标签
					this.queryCode(code)
				}
			});
		},
		startScan() {
			this.main.registerReceiver(this.receiver, this.intentFilter);
		},
		stopScan() {
			this.main.unregisterReceiver(this.receiver);
		},
		queryCode(code){
			// 有些PDA会自带换行符,trim函数处理下
			code = code.trim()
			if (_httpLoading) return;
			_httpLoading = true;
			setTimeout(() => {
				_httpLoading = false
			}, 200)
			uni.$emit('SCAN_CODE', {
				code
			})
		}
	}
}
</script>

<!-- 使用方法: 1.引入组件 2.在onShow\onLoad 时,uni.$on('SCAN_CODE',(res)=>{ 这是扫描到的条形码:res.code }) -->

优博讯或者其他具有扫描功能的设备,参考上一篇文章进行设置:intent输出

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值