1、在utils文件夹下新建scan.js文件
/**
* pda红外线扫码
*/
var main = ''
var filter = ''
var receiver = ''
var codeQueryTag = false
let scanSuccess = function(){} // 成功后的操作函数
//开启服务监听
export function initScan(successFun) {
scanSuccess = successFun
console.log('开启了监听');
main = plus.android.runtimeMainActivity();//获取activity
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
filter.addAction("android.intent.ACTION_DECODE_DATA"); // 换你的广播动作 (设置-扫描设置-输出方式-输出方式改为Intent输出)
receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function (context, intent) {
plus.android.importClass(intent);
let code = intent.getStringExtra("barcode_string");// 换你的广播标签
queryCurrenCode(code);
}
});
console.log('开启监听完成');
}
//这个得有,开启监听用
export function startScan() {
main.registerReceiver(receiver, filter);
}
//这个也得有,关闭监听用
export function stopScan() {
main.unregisterReceiver(receiver);
}
//这个是防止重复用的
async function queryCurrenCode(code) {
//防重复
if (codeQueryTag) return false;
codeQueryTag = true;
setTimeout(() => {
codeQueryTag = false;
}, 150);
console.log('调用接口啦------', code);
scanSuccess(code)
}
2、使用页面:
<script>
import { initScan, startScan, stopScan } from "@/utils/scan";
export default {
onShow() {
initScan(this.scanSuccess);
startScan();
},
onHide() {
stopScan();
},
methods: {
// 红外线扫码成功后
async scanSuccess(code) {
console.log('红外线扫码的结果', code);
// 下面就是写取到结果后的事情
}
},
}
</script>
附:红外线扫描配置(以优博讯的一款PDA为例)
1、点击【设置】;找到【扫描设置】
2、打开【输出方式】页面,再次点击【输出方式】
3、设置【输出方式】为【Intent输出】,此时下方【广播动作】、【广播字符串数据标签】、【广播字节数据标签】为可点击编辑状态;
与代码里的对应上即可,我这里是
【广播动作】:android.intent.ACTION_DECODE_DATA
【广播字符串数据标签】:barcode_string
文章来源:https://www.toymoban.com/news/detail-727943.html
文章来源地址https://www.toymoban.com/news/detail-727943.html
到了这里,关于PDA 红外扫码 uniapp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!