<template>
|
<view>
|
<view class="content"></view>
|
</view>
|
</template>
|
<!-- 激光扫码,广播模式 -->
|
<script>
|
var main, receiver, filter;
|
var codeQueryTag = false;
|
export default {
|
data() {
|
return {
|
scanCode: "",
|
};
|
},
|
created() {
|
// 初始化
|
this.initScan();
|
// 启动广播
|
this.startScan();
|
},
|
onHide() {
|
// 结束广播
|
this.stopScan();
|
},
|
destroyed() {
|
// 结束广播
|
this.stopScan();
|
},
|
methods: {
|
// 初始化
|
initScan() {
|
// #ifdef APP
|
// console.log('initScan:扫码初始化');
|
let that = this;
|
main = plus.android.runtimeMainActivity(); //获取activity
|
//var context = plus.android.importClass('android.content.Context'); //上下文
|
var IntentFilter = plus.android.importClass("android.content.IntentFilter");
|
filter = new IntentFilter();
|
//下面的addAction 改为自己 pad 设备的广播动作(在扫描设置或者厂商附带的app 里面设置为广播模式,然后查看相应参数)
|
filter.addAction("com.dwexample.ACTION");
|
receiver = plus.android.implements("io.dcloud.feature.internal.reflect.BroadcastReceiver", {
|
onReceive: (context, intent) => {
|
console.log("---onReceive:", context, intent);
|
plus.android.importClass(intent);
|
//下面的getStringExtra内改为自己的广播标签(键值/key): data
|
//斑马 TC20
|
var banMaSacanInfo = intent.getStringExtra(
|
"com.motorolasolutions.emdk.datawedge.data_string"
|
);
|
// callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));
|
console.log("斑马扫描结果", banMaSacanInfo);
|
// 传入接收到的参数
|
that.queryCode(banMaSacanInfo);
|
},
|
});
|
// #endif
|
},
|
// 开启广播
|
startScan() {
|
// #ifdef APP
|
console.log("startScan,开启广播接收");
|
main.registerReceiver(receiver, filter);
|
// #endif
|
},
|
// 关闭广播
|
stopScan() {
|
// #ifdef APP
|
console.log("stopScan结束");
|
main.unregisterReceiver(receiver);
|
// #endif
|
},
|
// 避免重复扫码
|
queryCode: function (code) {
|
// #ifdef APP
|
if (codeQueryTag) return false;
|
codeQueryTag = true;
|
setTimeout(function () {
|
codeQueryTag = false;
|
}, 150);
|
// console.log('-****--扫码code: ', code);
|
let data = code;
|
uni.$emit("scan", {
|
code: data,
|
});
|
// #endif
|
},
|
triggerScan() {
|
console.log("触发扫描");
|
// 获取Android意图类
|
let Intent = plus.android.importClass("android.content.Intent");
|
// 实例化意图
|
let intent = new Intent();
|
// 定义意图,由厂商提供(此处设置为东大的: 开始扫描广播com.scan.onStartScan,对应的停止扫描广播为com.scan.onEndScan)
|
intent.setAction("com.symbol.datawedge.api.ACTION");
|
intent.putExtra("com.symbol.datawedge.api.SOFT_SCAN_TRIGGER", "START_SCANNING");
|
// 广播这个意图
|
main.sendBroadcast(intent);
|
},
|
},
|
};
|
</script>
|