uniapp移动终端pda激光扫描

uniapp实现pda的具体原理是在设备端需要开启广播模式,uniapp端通过调用方法来获取设备端扫描到的数据,从而在APP端对扫描的结果进行控制

一.首先打开手机的设置->扫描设置->输出模式->广播输出

.查看广播输出的配置信息

  • 我的广播输出action是nlscan.action.SCANNER_RESULT
  • extra是 SCAN_BARCODE1

 需要记录广播输出配置的action 和 extra信息,在代码中这两个参数要对应哦

 二.在你的uniapp项目里创建一个组件,叫scan-code吧,放在公共组件下面,目录为components/scan-code/scan-code.vue,页面代码如下:

<template>
	<view class="content"></view>
</template>

<script>
	export default {
		data() {
			return {
				activity: null,
				receiver: null,
				intentFilter: null
			}
		},
		created: function(option) {
			this.initScan()
			this.startScan();
		},
		onHide: function() {
			this.stopScan();
		},
		destroyed: function() {
			//页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果/
			this.stopScan();
		},
		methods: {
			initScan() {
				let _this = this;
				this.activity = plus.android.runtimeMainActivity(); //获取activity
				var IntentFilter = plus.android.importClass('android.content.IntentFilter');
				this.intentFilter = new IntentFilter();
				this.intentFilter.addAction('nlscan.action.SCANNER_RESULT') // 换你的广播动作
				this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
					onReceive: function(context, intent) {
						console.log("intent",intent)
						plus.android.importClass(intent);
						let content = intent.getStringExtra('SCAN_BARCODE1'); // 换你的广播标签
						
						uni.$emit('scancodedate', content)
					}
				});
			},
			startScan() {
				this.activity.registerReceiver(this.receiver, this.intentFilter);
			},
			stopScan() {
				this.activity.unregisterReceiver(this.receiver);
			}
		}
	}
</script>

<style>
</style>

引入自定义组件scan-code.vue

<template>
    <view>
        <view>你的页面内容</view>
        <view v-for="item in content">{{item}}</view>
        <pda-scan></pda-scan>
    </view>
</template>

<script>
import scanCode from '@/components/scan-code/scan-code.vue';
export default {
    components: { scanCode },
    data() {
        return {
            content: []
        }
    },
    onLoad() {
        var _this = this
        uni.$on('scancodedate', function(content) {
            console.log("扫描到的内容为:", content)
            _this.content.push(content)
        })
    }
}
</script>

三个步骤完成后,最好是用真机测试,只需要启动项目,打开存在app后,直接使用设备终端的扫描功能就能得到响应啦!!!

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值