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

问题1:

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

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

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

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

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

EditText.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubgetWindow().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、系统软键盘和外接键盘(扫码枪实际就是一种外接键盘)冲突,导致扫码枪输入信息错误,此时可限制系统键盘弹出的方式解决;

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

  1. 解决Android EditText使用扫码枪与中文输入法冲突的问题

    使用码枪扫收款码等信息时,若当前使用的是部分中文输入法,则会可能出现扫码结果不准确的问题,解决此问题的方法是自定义EditText,并根据实际需求重写dispatchKeyEventPreIme方法. ...

  2. Android Edittext 手机号码格式输入设置

    一. 效果图 根据需求要实现的是输入手机号码格式的数字文本,并且输入时能根据手机号码自动分隔成美观的带空格的格式,点击完成后能对手机号码验证是否是手机号码. 二. 代码实现 我使用的是动态添加代码的方 ...

  3. android edittext 手机号码,Android Edittext 手机号码格式输入设置

    一. 效果图 根据需求要实现的是输入手机号码格式的数字文本,并且输入时能根据手机号码自动分隔成美观的带空格的格式,点击完成后能对手机号码验证是否是手机号码. 二. 代码实现 我使用的是动态添加代码的方 ...

  4. android设置输入框输入字符限制,Android EditText限制输入字符的方法总结

    Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式 ...

  5. android edittext限制字节_android EditText输入限制

    zyz 发表于 2012-5-30 18:19:03 android EditText输入限制 android:digits="1234567890.+-*/%\n()" 限制输入 ...

  6. android edittext输入邮箱,[Android教程]EditText怎样限制用户的输入?数字/字母/邮箱

    有输入必有验证.为了防止用户随便输入确保提交数据的合法性,程序不得不在文本输入框(EditText)中增加限制或验证. 关于输入类型有数字.字母.邮箱.电话等形式,这些具体得根据业务来.那么Andro ...

  7. java edittext 输入监听_Android应用开发之Android EditText 监听用户输入完成的实例

    本文将带你了解Android应用开发Android EditText 监听用户输入完成的实例,希望本文对大家学Android有所帮助. 我们都知道, Android   EditText输入框,并没有 ...

  8. android edittext 输入手机号码格式变化

    android edittext 输入内容只能是xxx-xxxx-xxxx格式的手机号码 EditText phoneEt = (EditText) findViewById(R.id.phone_e ...

  9. Android EditText输入光标居于开头最开始位置

    Android EditText输入光标居于开头最开始位置 Android的EditText输入光标默认是居于整个EditText的中心位置的,如图所示: 如果欲使EditText加载后的输入光标自动 ...

最新文章

  1. pytorch 加载模型报错:‘function‘ object has no attribute ‘copy‘
  2. Chapter 1 First Sight——9
  3. 两类传输协议:TCPUDP总结
  4. 大内高手—共享内存与线程局部存储
  5. 使用React,TypeScript和Socket.io构建聊天应用
  6. FFMPEG 库移植到 VC 需要的步骤
  7. NeHe OpenGL教程(中文版附源代码)
  8. NOIP2016滚粗记
  9. 搜集整理一些Cron表达式例子
  10. 医学诊断报告生成论文综述
  11. 英语期刊写作-通往国际学术舞台的阶梯第六章答案
  12. MAC big sur桌面图片在哪个文件夹
  13. Firefox内存占用过高假死解决方法
  14. Tomcat服务器日志输出格式设置
  15. 已知含税单价、税率、数量,计算不含税单价、不含税金额、税额
  16. python爬虫——基础知识
  17. 对华锐风电的一些看法
  18. 【机器学习应用】机器学习之无监督学习
  19. 如何从Mac到HomePod播放音频
  20. table后台数据渲染,不满n条时tr补全

热门文章

  1. 外文文献翻译工具,4款可供选择!
  2. writeup 攻防世界 Decrypt-the-Message
  3. objectArx---AcGe几何类
  4. objectArx ---基础操作
  5. 编译MapGuide
  6. k8s探针检测php,K8s探针
  7. Python聚类分析
  8. Web课程设计——小米商城页面实战(html,css,js实现)
  9. xbox手柄_请不要通过Xbox Live判断白人
  10. Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in