uniapp 监听PDA扫描工具数据
1、需要是:App监听东大PDA内置的扫描工具,通过扫描工具扫描条码,把数据主动赋值在input输入框,无需手动设置或者调用uniapp的uni.scanCode({})去赋值
2、这里申明下,在封装的JS外面,你须要晓得你的PDA的播送动作,键值称,去设置后,能力对应失效,我这边是东大的出厂设置
3、调用的代码曾经封装成js,间接去复制调用即可,感觉能解决了问题的,动动小指头点个赞~ O(∩_∩)O
附带一张扫描工具样子:
A、页面上的调用如下:
import { websocetObj } from '@/utils/websocet/websocet.js';
methods:{
getScancode(code){
this.config =code
}
},
onLoad() {
//init传入一个回调函数做参数,在扫描的时候会将数据传入这个办法里,而后在解决你的业务逻辑
broadcastScan.init(this.getScancode);
},
onUnload() {
broadcastScan.stop();
},
onHide() {
broadcastScan.stop();
},
onShow() {
broadcastScan.start();
}
B、创立一个js文件,复制以下代码。
let main;
let filter;
let receiver;
let tag = false;
/**
* 开始播送监听扫码
* that:传this;
*/
const start = () => {
/* #ifdef APP-PLUS */
main.registerReceiver(receiver, filter);
/* #endif */
}
/**
* 进行播送监听扫码
* that:传this;
*/
const stop = () => {
/* #ifdef APP-PLUS */
main.unregisterReceiver(receiver);
/* #endif */
}
/** 残余下个变量曾经做了全局变量
*
* 定义播送
* that:传this;
*/
const init = (onReceive) => {
/* #ifdef APP-PLUS */
//获取activity
main = plus.android.runtimeMainActivity();
const IntentFilter = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
// 扫描设置的播送名称
filter.addAction("com.android.server.scannerservice.broadcast");
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function(context, intent) {
plus.android.importClass(intent);
// 扫描设置的开发者选项--键值名称 scannerdata
const code = intent.getStringExtra("scannerdata");
// 业务
//防反复
if (tag) return;
tag = true;
setTimeout(function() {
tag = false;
}, 150);
//到这里扫描胜利了,能够调用本人的业务逻辑,code就是扫描的后果 return出code进行业务解决
onReceive && onReceive(code);
}
});
/* #endif */
}
export const broadcastScan = {
init,
start,
stop,
};
发表回复