关于外设扫码枪或扫码盒子扫码监听处理

在activity里面监听事件即可
ps:如果页面弹窗了dialog,相关事件会被dialog拦截掉,需要在dialog里面也加入监听,可考虑抽取到一个代码块里面。

 /**
     * 扫码事件分发
     */
    override fun dispatchKeyEvent(event: KeyEvent): Boolean {
        //非扫码盒子事件则不处理
        if ("Virtual".equals(event.device.name, ignoreCase = true)) {
            return super.dispatchKeyEvent(event)
        }
        // 如果想过滤特殊输入设备,则可使用event.getDevice()中的属性过滤
        // 并在非过滤条件后return super.dispatchKeyEventPreIme(event);
        if (0 == event.unicodeChar) {
            return true
        }
        // 每次按键后累计字符
        if (event.action == KeyEvent.ACTION_DOWN) {
            mResult += event.unicodeChar.toChar()
        }
        // 码枪默认使用KEYCODE_ENTER作为结束标志
        if (event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER) {
            toast(mResult)
            ScanQrManager.getInstance().notifyResult(mResult)
            mResult = ""
        }
        return true
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容