【uniapp】uni-app开发手持PDA上的激光扫码程序,uniapp主动触发pda激光扫码(附完整代码)

1. 项目需求

我们项目采购了Seuic东集CRUISE Ge-X3 工业级智能手机(PDA),PDA设备是Android9系统,带有激光扫码灯,现在要使用uniapp开发安卓程序,并实现在PDA设备上的激光扫码程序。

2. 前置条件

  1. 确保扫描工具已经正常启动,并在扫描工具中的设置-开发者选项中-获取指定的广播名称、键值名称等数据
    在这里插入图片描述
    在这里插入图片描述

  2. pda特色设置中关闭《禁止将扫描按键的键值传递给应用》的选项

在这里插入图片描述

3. 代码实现

激光扫码是硬解的方案,扫码的速度远高于需要唤醒过程的摄像头扫码方式,激光扫码几乎可以实时返回结果。不过其依赖Android 8以上的版本才可以通过广播的方式被应用监听,因此在开发的过程中会造成一些阻碍。无论是原生的Android开发方式,还是像uni-app的跨平台解决方案,都需要在激光扫描模块获取到结果后向系统发出一条广播,接着可以通过应用监听广播的方式来获取扫码结果。

下面是扫码的scanCode.js文件内容:

// pda的特色设置中需要关闭-禁止将扫描按键的键值传递给应用的开关
let mainActivity; // 运行时的主要活动activity
let intentFilter; // 实例化的意图过滤器
let broadcastReceiver; // 广播接收器
let repeatFlag = false;

// 初始化定义广播
const init = (onReceiveCallback) => {
   
	/* #ifdef APP-PLUS */
	// 获取activity
	mainActivity = plus.android.runtimeMainActivity();
	// 导入类
	const IntentFilter = plus.android.importClass('android.content.IntentFilter');
	//实例化一个意图过滤器
	intentFilter = new IntentFilter();
	// addAction添加动作, com.android.server.scannerservice.broadcast为设备配置的广播名称
	intentFilter.addAction("com.android.server.scannerservice.broadcast");
	// BroadcastReceiver广播接收器接口:implements 实现接口  onReceive实现接口的方法
	broadcastReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
   
		onReceive: function(context, intent) {
   
			plus.android.importClass(intent);
			// 扫描设置的开发者选项--手持机pda的广播键值scannerdata
			const code = intent.getStringExtra("scannerdata");
			console.log('pda原始扫描数据:', code
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卸载引擎

如果对您有帮助,请赏个饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值