<template>
|
<view>
|
<view class="content"></view>
|
</view>
|
</template>
|
<script lang="ts" setup>
|
const main = ref();
|
const receiver = ref();
|
const filter = ref();
|
const codeQueryTag = ref(false);
|
const props = defineProps({
|
emitName: {
|
type: String,
|
default: "scan",
|
},
|
});
|
|
const initScan = () => {
|
main.value = plus.android.runtimeMainActivity(); //获取activity
|
let IntentFilter: any = plus.android.importClass("android.content.IntentFilter");
|
filter.value = new IntentFilter();
|
//下面的addAction 改为自己 pad 设备的广播动作(在扫描设置或者厂商附带的app 里面设置为广播模式,然后查看相应参数)
|
filter.value.addAction("com.dwexample.ACTION");
|
receiver.value = plus.android.implements("io.dcloud.feature.internal.reflect.BroadcastReceiver", {
|
onReceive: (context: any, intent: any) => {
|
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);
|
// 传入接收到的参数
|
queryCode(banMaSacanInfo);
|
},
|
});
|
};
|
|
// 开启广播
|
const startScan = () => {
|
// #ifdef APP
|
console.log("startScan,开启广播接收");
|
main.value.registerReceiver(receiver.value, filter.value);
|
// #endif
|
};
|
// 关闭广播
|
const stopScan = () => {
|
// #ifdef APP
|
console.log("stopScan结束");
|
main.value.unregisterReceiver(receiver.value);
|
// #endif
|
};
|
|
const queryCode = (code: any) => {
|
// #ifdef APP
|
if (codeQueryTag.value) return false;
|
codeQueryTag.value = true;
|
setTimeout(function () {
|
codeQueryTag.value = false;
|
}, 150);
|
// console.log('-****--扫码code: ', code);
|
let data = code;
|
uni.$emit(props.emitName, {
|
code: data,
|
});
|
// #endif
|
};
|
|
const 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.value.sendBroadcast(intent);
|
};
|
|
onLoad(() => {
|
console.log("初始化");
|
// 初始化
|
initScan();
|
// 启动广播
|
startScan();
|
});
|
|
onHide(() => {
|
stopScan();
|
});
|
|
onUnmounted(() => {
|
stopScan();
|
});
|
|
defineExpose({
|
triggerScan,
|
});
|
</script>
|