PDA开发日志

pda广播有两种形式

  1.  聚焦显示数据
  2.  广播

等等...具体选择哪个根据设备和实际需求

我这边选择广播【聚焦总会弹出系统键盘,暂时没有更好的办法可以去掉闪现】

新建一个【pdaScan.ts】

export class BroadcastScan {
    private main: any
    private filter: any
    private receiver: any
    private tag = false
    constructor() {}
    init(onReceive: (code: string) => void) {
        this.main = plus.android.runtimeMainActivity()
        const IntentFilter = plus.android.importClass('android.content.IntentFilter')
        this.filter = new IntentFilter()
        // 扫描设置的广播名称【设备上设置的】
        this.filter.addAction('...')
        const that = this
        this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
            onReceive: function (context: any, intent: any) {
                plus.android.importClass(intent)
                // 扫描设置的开发者选项--键值名称【设备上设置的】
                const code = intent.getStringExtra('...')
                // 业务
                //防重复
                if (that.tag) return
                that.tag = true
                setTimeout(() => {
                    that.tag = false
                }, 150)
                //到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果    return出code进行业务处理
                onReceive && onReceive(code)
            },
        })
    }
    start() {
        if (this.receiver) this.main.registerReceiver(this.receiver, this.filter)
    }
    stop() {
        if (this.receiver) this.main.unregisterReceiver(this.receiver)
    }
}

然后在需要监听的页面引入使用即可

import { BroadcastScan } from '@/utils/pdaScan'
const broadcastScan = new BroadcastScan()
.................

onLoad(() => {
    console.log('加载 - onLoad')
    const fn = (code: string) => {
        console.log('code', code)
        scanCode.value = code
    }
    broadcastScan.init(fn)
})
onShow(() => {
    broadcastScan.start()
})

onUnmounted(() => {
    broadcastScan.stop()
})
onHide(() => {
    broadcastScan.stop()
})

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值