uni-app对接pad扫描功能

2021-01-07  本文已影响0人  甘道夫老矣

哪里需要用到扫描功能,哪里就把这个放在页面上,里面有些参数是需要跟当前的pad工具里面的参数一致的
一般都会默认一样的

<script>
var main, receiver, filter;
var _codeQueryTag = false;
export default {
  data() {
    return {
        }
  }
  onShow() {
    //PDA扫描开始
    this.startScan();
  },
  onLoad(value) {
    //PDA扫描初始化实例
    this.initScan()
  },
  onHide() {
    //PDA扫描调用结束
    this.stopScan();
  },
  onUnload() {
    /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
    this.stopScan();
  },
  methods: {
      // 扫描逻辑
            initScan() {
                let _this = this;
                /* #ifdef APP-PLUS */
                main = plus.android.runtimeMainActivity(); //获取activity  
                /* var context = plus.android.importClass('android.content.Context'); */
                var IntentFilter = plus.android.importClass('android.content.IntentFilter');
                /* var Intent = plus.android.importClass('android.content.Intent'); */
                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);
                        /*不同的手机或pda,这个值就不一样,要具体去查硬件api*/
                        let code = intent.getStringExtra("scannerdata");
                        /* rmker.showTip('条码:'+code); */
                        /*调用本页面某方法*/
                        _this.queryCode(code);
                    }
                });
                /* #endif */
            },
            startScan() {
                /* #ifdef APP-PLUS */
                main.registerReceiver(receiver, filter);
                /* #endif */
            },
            stopScan() {
                /* #ifdef APP-PLUS */
                main.unregisterReceiver(receiver);
                /* #endif */
            },
            queryCode: function(code) {
                //防重复  
                if (_codeQueryTag) return false;
                _codeQueryTag = true;
                setTimeout(function() {
                    _codeQueryTag = false;
                }, 150);
                //到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果  
                if (code) {
                    this.scanCode = code.replace(/\s/g, "");
                    console.log(code)
                    
                }
            },
    }
}
上一篇 下一篇

猜你喜欢

热点阅读