
关于uinapp 调用PDA设备激光扫码 - 广播模式
不是所有的PAD设备 都有设置-扫描设置-然后选择广播模式(查看广播动作-广播标签),可能也是在pad设备自带扫描工具(app)参数设置里面–然后选择广播模式(查看广播动作/名称-广播标签/键值/key)** 3.** 调用。
·
1. 不是所有的PAD设备 都有设置-扫描设置-然后选择广播模式(查看广播动作-广播标签),可能也是在pad设备自带扫描工具(app)参数设置里面–然后选择广播模式(查看广播动作/名称-广播标签/键值/key)
2 . 组件设置
<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.scanner.broadcast");
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
console.log('---***getStringExtra: ',intent.getStringExtra("data"));
let code = intent.getStringExtra("data");
console.log('---扫码data: ', code);
that.queryCode(code);
}
});
// #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('xwscan', {
code: data
})
// #endif
}
}
}
</script>
** 3.** 调用
<template>
<view class="content">
<view class="uni-form-item uni-column">
<view class="title">实时获取请扫描输入值:{{value}}</view>
<u--input class="input" v-model="value" placeholder="请扫描" :focus="focus" clearable @input="onInput"
@confirm="confirm" @blur="blur"/>
</view>
<xw-scan></xw-scan>
</view>
</template>
<script>
// 广播模式激光扫码
import xwScan from '@/components/padDevice/scan-code.vue'
export default {
components: {
xwScan
},
data() {
return {
value: '',
focus: false,
scanTitle: "扫描结果",
}
},
onLoad() {
// plus.key.addEventListener('keydown', event => {
// console.log("按键:" + event);
// console.log("按键:" + event.keyCode);
// if (event.keyCode == '139') {
// uni.hideKeyboard();
// }
// });
},
onUnload() {
// 移除监听事件
uni.$off('xwscan')
},
onShow() {
uni.$off('xwscan') // 每次进来先 移除全局自定义事件监听器
uni.$on('xwscan', (res) => {
console.log('扫码结果:', res.code);
this.scanTitle = '激光扫码结果';
this.value= res.code;
})
},
methods: {
focusHide(val) {
let that = this
// setTimeout(() => {
that.focus = true;
// }, 100)
console.log('eeeee')
// 这是隐藏自动弹出软键盘 (好像没有用)
setTimeout(() => {
uni.hideKeyboard();
}, 100)
},
blur(){
this.focus = false;
},
confirm(value) {
// 自动多次扫码
let that = this
// that.value = ''
setTimeout(() => {
that.focus = false;
that.$nextTick(() => {
that.focus = true;
});
// that.value = ''
}, 350)
console.log('扫码结果:', value);
},
onInput(value) {
this.value = value
},
}
}
</script>
点击阅读全文
更多推荐
活动日历
查看更多
直播时间 2025-02-26 16:00:00


直播时间 2025-01-08 16:30:00


直播时间 2024-12-11 16:30:00


直播时间 2024-11-27 16:30:00


直播时间 2024-11-21 16:30:00


所有评论(0)