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
