PDA 红外扫码 uniapp

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

   

 

猜你喜欢

转载自blog.csdn.net/qq_58340302/article/details/133674254