uniapp 手持终端PDA扫码

步骤一:查看广播名称(或者广播标签)和键值

在桌面中找到仓管通,进入软件设置,查看自己的广播名称和键值。(说明:每个手持机可能有所不同)

步骤二:代码实现环节

  • 1.首先在components文件夹创建一个名为scancode组件

<template>
    <view class="content"></view>
</template>

export default {
        name: "scancode",
        data() {
            return {
                activity: null,
                receiver: null,
                intentFilter: null
            };
        },
        created: function(option) {

            this.ksguangbo()
            this.initScan()
            setTimeout(() => {
                this.startScan();
            }, 1000)

        },
        onHide: function() {
            this.stopScan();
        },
        destroyed: function() {
            //一定要卸载监听,否则下次扫描时结果会重复,造成扫一次出2个以上的结果或者结果会不断连续叠加
            this.stopScan();
        },
        methods: {
            ksguangbo() { //发送广播
                var Intent = plus.android.importClass("android.content.Intent");
                var intent = new Intent("com.android.scannerservice.scan");
                var keyValue = "231112312";
                var main = plus.android.runtimeMainActivity();
                intent.putExtra("key", keyValue);
                main.sendBroadcast(intent);
            },
            initScan() {
                let _this = this;
                _this.activity = plus.android.runtimeMainActivity(); //获取运行时的主要活动
                console.log('扫码组件36行', _this.activity);
                var IntentFilter = plus.android.importClass('android.content.IntentFilter'); //导入类
                console.log('扫码组件38行', IntentFilter);
                _this.intentFilter = new IntentFilter(); //实例化一个意图过滤器
                _this.intentFilter.addAction(
                    'com.android.scannerservice.scan') //addAction添加动作 记得换你的com.android.scannerservice.scan广播动作或者广播名称

                //蓝牙
                //var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
                //var BAdapter = new BluetoothAdapter.getDefaultAdapter();
               // _this.intentFilter.addAction(BAdapter.ACTION_STATE_CHANGED); //监听蓝牙
               // console.log('扫码组件44行', _this.intentFilter);

                //BroadcastReceiver广播接收器接口
                // implements 实现接口  onReceive实现接口的方法
                _this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                    onReceive: function(context, intent) {
                        console.log("58行", intent)
                        plus.android.importClass(intent);
                        let content = intent.getStringExtra('scannerdata'); // 换你手持机的广播键值 
                        console.log('content', content)
                        uni.$emit('scancodedate', content)
                    },
                });
               },
            startScan() { //开始扫描
                this.activity.registerReceiver(this.receiver, this.intentFilter);
                console.log('开始扫描')
            },
            stopScan() { //结束扫描
                this.activity.unregisterReceiver(this.receiver);
            }
        }
    }
  • 2.在页面中使用scancode组件
<view>
     <scanCode></scanCode>
</view>

在生命周期函数--onShow实现监听,在onHide函数再次关闭监听(不用就关闭免得浪费开销)


/**
         * 生命周期函数--监听页面显示
         */
        onShow() {
            // #ifdef APP-PLUS
            uni.$off('scancodedate');
            var _this = this
            uni.$on('scancodedate', function(content) {
                console.log("扫描到的内容为:", content)
                var scanContent = content.replace('\n', '');
                _this.scanContent(scanContent);
            })
            // #endif
        },
/**
         * 生命周期函数--监听页面隐藏
         */
        onHide() {
            // #ifdef APP-PLUS
            uni.$off('scancodedate');
            // #endif
        },
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值