Android EditText接收扫码枪输入,有时缺位,有时出现两次回车

2023-11-05

最近做Android项目时,需要使用外接扫码枪扫描条码,并且接收条码输入的EditText同时还要能接收商品名称的输入,在开发调试的过程中发现,使用扫码枪时会出现条码信息丢失,或者扫码输入过程中出现两次Enter的情况。

问题1:

扫码枪扫码后,会⾃动调起系统软键盘

扫码枪相当于外接键盘,对于外接键盘不同的Android设备表现不同,⼀般我们期望外接键盘与系统键盘互斥。看⼚商是否在Framework有做过适配处理。

若要不弹出系统软键盘,可禁⽤Activity软键盘:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

该设置会导致界面里面所有需要弹出软键盘的控件均无法显示软键盘。当我们需要清除该状态时,可以在输入控件的Touch事件里面进行解除

EditText.setOnTouchListener(new OnTouchListener() {

    @Override

    public boolean onTouch(View v, MotionEvent event) {

        // TODO Auto-generated method stub

        getWindow().clearFlags(

        WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

        return false;

    }

});

解除禁用

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)

问题2:

扫码枪扫码后,⾃动弹出软键盘,同时EditText显⽰内容有丢失或代码监听扫码事件,监听到的KeyEvent.getKeyCode是KeyEvent.KEYCODE_ENTER

解决办法:

由于扫码枪与系统软键盘冲突,部分数据被系统软键盘拦截,禁⽤系统软件盘可解决此问题
 

问题3:

由于扫码枪与系统软键盘冲突,部分数据被系统软键盘拦截,禁⽤可解决此问题
 

解决办法:

扫到的码最后⼀般带有回车符,导致EditText失去焦点。可给EditText配置如下next系列属性,使其下个焦点仍然指向⾃⼰

<EditText
id="@+id/scan_code"
layout_width="300px"
layout_height="100px"
textSize="20sp"
nextFocusDown="@id/scan_code"
nextFocusForward="@id/scan_code"
nextFocusLeft="@id/scan_code"
nextFocusRight="@id/scan_code"
nextFocusUp="@id/scan_code"
nextClusterForward="@id/scan_code"/>

总结:

Android设备外接扫码枪,在EditText接收扫码输入时,不同设备的表现不同,有些设备的Framework层未做外接键盘和系统键盘冲突的处理逻辑,可能会导致扫码输入信息错误的情况。

1、使用中文输入法(百度中文输入法,谷歌中文拼音输入法)中文输入方式时(搜狗输入法无此问题),使用扫码枪向EditText输入扫码信息,会出现多次回车,或者输入不完整的情况,此时可尝试将EditText的输入内容限制为Number纯数字输入,避免中文导致的问题;

2、系统软键盘和外接键盘(扫码枪实际就是一种外接键盘)冲突,导致扫码枪输入信息错误,此时可限制系统键盘弹出的方式解决;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android EditText接收扫码枪输入,有时缺位,有时出现两次回车 的相关文章

随机推荐

  • 针对 微信小程序 的 getUserInfo 接口废弃,不能弹出授权窗口的问题

    getUserInfo 接口废弃说明 官方给出的废弃getUserInfo接口的通知链接 小程序登录 用户信息相关接口调整说明 废弃时间 2021年4月28日以后 废弃后的使用情况 无法通过wx getUserInfo与
  • 从输入网址到页面呈现的详细过程

    面试题经典题目 简要回答如下 a 域名解析 b 发起TCP连接的三次握手 c 建立TCP连接后发起http请求 d 服务端响应http请求 返回响应报文 e 浏览器页面渲染 f 断开TCP连接 下面详细介绍 a 域名解析 DNS解析 当在浏
  • 计算机上的无线网络开关怎么打开,联想笔记本无线网络开关怎么打开

    当我们买到笔记本电脑的时候 我们会不会就会急着想上网看一下呢 女生会选择第一时间追一下剧 男生呢 就会想下载一个游戏来刺激一下 那消费者知不知道无线网络开关是怎么开的吗 下面小编就给大家说说联想笔记本无线网络开关怎么打开 打开无线网络开关的
  • 开发人员谈测试:如何写出简洁又规范的单元测试

    文章转载链接 http www 51testing com html 83 n 4480883 html 我们之前谈到过要让开发人员认识到测试的重要性并了解测试 本文的主要重点是针对日常开发阶段工程师可以做的事情 也就是单元测试而展开 编写
  • 分布式锁看这篇就够了

    https blog csdn net tzs 1041218129 article details 80086991 关注我 转载请务必注明原创地址为 http www 54tianzhisheng cn 2018 04 24 Distr
  • STM32外设系列—HC-05(蓝牙)

    文章目录 一 蓝牙简介 二 使用方法 2 1 接线 2 2 AT指令 三 蓝牙APP 四 实战项目 4 1 添加文件 4 2 配置需要传递的参数 4 3 获取返回值 4 4 发送光照强度 4 5 控制程序 4 6 手机端页面设计 4 6 1
  • python的学习心得与知识总结

    1 字符串格式化表达式 作用 生成一定格式的字符串 运算符 语法格式 格式字符串 参数值 或 格式字符串 参数值1 参数值2 参数值3 说明 左侧为格式格式字符串 右侧为参数值 当有多个参数值时用 括号 括起来 并用逗号 隔开 格式化字符串
  • 基于java的饮食分享平台系统毕业设计(源代码+数据库+部署文档+部署视频)

    摘要 本篇论文主要介绍了基于Java的饮食分享平台系统的设计与实现 通过对现有饮食分享平台的分析和用户需求的调研 本设计采用Java语言进行系统开和编码 首先分析了饮食分享平台的背景和相关知识 然后提出了系统的需求和设计方案 接着详细介绍了
  • 自定义解密注解

    在开发中 有时候会遇到前端body加密 后端解密操作 接下来用注解实现 1 新增DecodeRequestBodyAdvice类 package com xx advice import lombok extern slf4j Slf4j
  • 图卷积 节点分类_了解图卷积网络以进行节点分类

    图卷积 节点分类 Neural Networks have gained massive success in the last decade However early variants of Neural Networks could
  • 如何学习数学分析

    如何学习数学分析 数学分析的研究定位 一直以来都是书到用时方恨少 刚毕业那会学的是计算机 从事算法工程师岗位 然后基础人工智能算法 在遗传BP 神经网络 旅行商问题上接触了很多数学知识 到后来的机器人导航工程师又做了路径规划 设计到视觉SL
  • 1.pwn基础总结

    基本概念 exploit 用于攻击的脚本与方案 通常缩写为exp payload 攻击载荷 是的目标进程被劫持控制流的数据 shellcode 调用攻击目标的shell的代码 打开目标的shell 获取目标控制权 pwn解题基本流程 che
  • CBC字节翻转攻击解析

    CBC字节翻转攻击解析 一 分组密码的模式 分组密码的主要模式有5种 ECB模式 电子密码本模式 Electronic CodeBook mode CBC模式 密码分组链接模式 Cipher Block Chaining mode CFB模
  • 可重入锁-Reentrant

    Reentrant Re entrant 可重复进入 什么叫可重入 线程可以进入任何一个它已经拥有的锁所同步着的代码块 可重锁作用 防止死锁 常用的可重入锁 JDK ReentrantLock java util concurrent lo
  • 如何异步+队列实现接入阿里云事件监控

    阿里云监控服务可用于收集获取阿里云资源的监控指标或用户自定义的监控指标 探测服务可用性 以及针对指标设置警报 使您全面了解阿里云上的资源使用情况 业务的运行状况和健康度 并及时收到异常报警做出反应 保证应用程序顺畅运行 阿里云事件监控文档地
  • C_单链表去重

    include
  • ubuntu18.04安装mysql5.7

    ubuntu18 04安装mysql5 7 一 安装MySQL 1 安装mysql服务 2 检查状态 3 注意查看mysql版本使用 4 查看MySQL5 7默认账号和密码 二 配置MySQL 三 查mysql服务状态 四 修改root账户
  • uView在uniapp中样式完全失效问题

    最近开发微信小程序和钉钉小程序 使用uniapp UI库准备使用uView 但是按官网引入之后 在小程序模拟器上样式完全无效 而H5正常 解决方法 由于Hbuilderx版本问题 编译的代码中会多出一行样式 可以更换3 2 16版本 亲测有
  • SecureCRT创建串口连接

    鉴于没有在网上找到很好的图解SecureCRT创建串口连接方式 自己写一篇作为备忘录 同时 便于有同样需求的朋友可以快速方便的创建串口连接方式 一 工具 电脑 串口线和超级终端 本文选择SecureCRT 二 方法步骤 1 点击设备管理 查
  • Android EditText接收扫码枪输入,有时缺位,有时出现两次回车

    最近做Android项目时 需要使用外接扫码枪扫描条码 并且接收条码输入的EditText同时还要能接收商品名称的输入 在开发调试的过程中发现 使用扫码枪时会出现条码信息丢失 或者扫码输入过程中出现两次Enter的情况 问题1 扫码枪扫码后