import {utf8ByteToUnicodeStr} from "./utf8ByteToUnicodeStr.js" var main, receiver, filter; var ScanDeviceClass = plus.android.importClass("android.device.ScanDevice"); var scanDevice; export const mixin={ data() { return { PhoneModel:'' } }, created() { let _this=this uni.getSystemInfo({ success: function(e) { _this.PhoneModel=e.model if(e.model=='PDA'){ scanDevice = new ScanDeviceClass(); scanDevice.openScan(); // 打开扫描 scanDevice.setOutScanMode(0); // 扫描模式 _this.initScan(); _this.registerScan(); } }}) }, onHide: function() { if(this.PhoneModel=='PDA'){this.unregisterScan()} }, destroyed() { if(this.PhoneModel=='PDA'){this.unregisterScan()} }, methods: { //PDA广播扫码 initScan() { let _this = this; main = plus.android.runtimeMainActivity(); //获取activity var IntentFilter = plus.android.importClass( "android.content.IntentFilter", ); filter = new IntentFilter(); filter.addAction("scan.rcv.message"); // 换你的广播动作 receiver = plus.android.implements( "io.dcloud.feature.internal.reflect.BroadcastReceiver", { onReceive: function(context, intent) { plus.android.importClass(intent); let code = intent.getByteArrayExtra("barocode"); // let codeStr = String.fromCharCode(...code); let codeStr = utf8ByteToUnicodeStr(code); let arr = codeStr.split(',') console.log("codeStr:", codeStr); if(arr.length==2){ _this.loginform = { account: arr[0], passWord: arr[1] } _this.register() }else{ console.log(codeStr) _this.sacncode=codeStr _this.$emit('scancode',_this.sacncode) } scanDevice.stopScan(); // 停止扫描 }, }, ); }, registerScan() { main.registerReceiver(receiver, filter); }, unregisterScan() { main.unregisterReceiver(receiver); }, startScan() { scanDevice.stopScan(); // 停止扫描 scanDevice.startScan(); // 开始扫描 }, } }