uni-app 获取PAD激光测温方式 (uni-app安卓获取广播内容)

直接在onload执行下列代码

javascript 复制代码
	var main = plus.android.runtimeMainActivity(); //获取activity
	var context = plus.android.importClass('android.content.Context'); //上下文
	var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
		onReceive: doReceive
	});
	var IntentFilter = plus.android.importClass('android.content.IntentFilter');
	var Intent = plus.android.importClass('android.content.Intent');
	var filter = new IntentFilter();
	filter.addAction('com.action.SCAN_RESULT'); // 添加广播动作名称 注意(这里要更换为你自己的需要问厂商)

	main.registerReceiver(receiver, filter); //注册监听

	function doReceive(context, intent) {
		//通过intent实例引入intent类,方便以后的'.'操作
		plus.android.importClass(intent);
		// =======================注意:这里要更换为你自己的 下文scanContext 和 length要更换为自己的 需要问厂商
		//条码内容
		var barcodeBytes = intent.getByteArrayExtra('scanContext');
		var barcode = byteToString(barcodeBytes);
		//条码长度
		var barcodeLength = intent.getIntExtra('length', 0);
		console.log('length', barcodeLength);
		//条码类型
		var barcodeTypeBytes = intent.getByteExtra('barcodeType', 0 | 0);
		var barcodeType = byteToString(barcodeTypeBytes);
		console.log('结果:', barcode);
		// 结果:,  Amb:25.91ᄀ₩,Object:23.71ᄀ₩,Body:35.00ᄀ₩
		
		// main.unregisterReceiver(receiver); //取消监听 在合适的时机调用
	}
	
	
	

	function byteToString(arr) {
		if (typeof arr === 'string') {
			return arr;
		}
		var str = '',
			_arr = arr;
		for (var i = 0; i < _arr.length; i++) {
			var one = _arr[i].toString(2),
				v = one.match(/^1+?(?=0)/);
			if (v && one.length == 8) {
				var bytesLength = v[0].length;
				var store = _arr[i].toString(2).slice(7 - bytesLength);
				for (var st = 1; st < bytesLength; st++) {
					store += _arr[st + i].toString(2).slice(2);
				}
				str += String.fromCharCode(parseInt(store, 2));
				i += bytesLength - 1;
			} else {
				str += String.fromCharCode(_arr[i]);
			}
		}
		return str;
	}
相关推荐
tongyiixiaohuang6 小时前
WMS已发货状态反写金蝶云星空:单策略实战教程
android
好的佩奇7 小时前
Dart 之类修饰符
android·flutter·dart
alexhilton8 小时前
用Konsist与Lint强制执行设计系统契约
android·kotlin·android jetpack
北京自在科技12 小时前
谷歌安卓 Gemini 迎来界面改版,Find Hub 接入 Gemini 支持物品记忆查找
android·安卓
YB137514 小时前
Jetpack Compose 动画Modifier.animateItem()
android
2401_8858850415 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
收纳过往15 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
狂热开发者16 小时前
车载中控要给鸿蒙用户,能不能和 Android 共用一个二维码?
android·华为·harmonyos
.Bryce.17 小时前
T2-LLM评测不等于Agent评测
android·java·人工智能·后端·gpt·agent·1024程序员节
美狐美颜SDK开放平台18 小时前
视频美颜SDK如何应对快速转头与大幅度面部动作?
android·人工智能·ios·音视频·直播美颜sdk·视频美颜sdk