这次写的业务中正好包括了扫码枪的内容,借这个机会记录一下扫码枪要怎么处理,还有焦点问题。

首先扫码枪其实是直接录入Edittext的,并且是一个一个字母/数字录入的。那么我们首先要有一个能够录入内容的Edittext:

android:id="@+id/et_scanCodeInput"

android:layout_width="1dp"

android:layout_height="1dp"

android:focusable="true"

android:focusableInTouchMode="true" />

宽高要设置为1dp,如果为0实测会有问题,不确定是不是因为框直接没了就无法录入了。

然后在onResume中etScanCodeInput.requestFocus(),让我们的输入框获取到焦点。一.干掉输入法

在init的时候发现,如果Edittext设置了焦点,输入框就必然会弹出来,这样的体验实在不佳,必须要干掉。

这时我们就要用到setShowSoftInputOnFocus

,  但是这个方法是隐藏的,必须要通过反射的方法来调用。this.getWindow().setSoftInputMode(

WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

try {

Class cls = EditText.class;

Method setShowSoftInputOnFocus;

setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus",

boolean.class);

setShowSoftInputOnFocus.setAccessible(true);

setShowSoftInputOnFocus.invoke(etScanCodeInput, false);

} catch (Exception e) {

e.printStackTrace();

}二.获取扫码枪内容etScanCodeInput.addTextChangedListener(inputTextWatcher);

private final TextWatcher inputTextWatcher = new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override

public void afterTextChanged(Editable editable) {

String code = editable.toString();

Log.e("code", code + ",length:" + code.length());

if (code.endsWith("\n") && code.length() > 5) {

String scanCode = "";

scanCode = code.substring(0, code.length() - 1);

Log.e("scanCode", "scanCode:" + scanCode);

for (MenuItem orderItem : menuItemLists) {

if (scanCode.equals(orderItem.SKU)) {

ExtOrderBean extOrderBean = new ExtOrderBean();

extOrderBean.goodsName = orderItem.goodsName;

extOrderBean.goodsRemake = orderItem.goodsRemake;

extOrderBean.goodsPrice = orderItem.goodsPrice;

extOrderBean.goodsWeight = 1;

extOrderBean.goodsAmount = orderItem.goodsAmount;

extOrderBean.goodsPluType = 2;

extOrderBean.gCode = orderItem.gCode;

extOrderBean.pluID = orderItem.pluID;

extOrderBean.displayMode = orderItem.displayMode;

extOrderBean.displayName = orderItem.displayName;

Log.e("MainActivity", "扫到内容:" + orderItem.goodsName);

IscaleSDKManager.getInstance().getSupportUdpManager().addOrderToService(extOrderBean);

}

}

etScanCodeInput.setText("");

}

}

};

根据扫码枪给到的"\n"标志或者固定长度来判断扫码成功,截取获得到的内容。三.多个Edittext焦点处理

在多个Edittext的时候,当第二个Edittext获取了焦点,会导致我们扫码枪用的Edittext失去焦点,并且无法再次获得,必须要进行一些处理。

首先是在dispatchTouchEvent中移除第二个Edittext的焦点,然后模拟手动点击第一个Edittext。@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

etCode.clearFocus();

etScanCodeInput.requestFocus();

etScanCodeInput.callOnClick();

return super.dispatchTouchEvent(ev);

}

这样我们只要点击任意空白处就会直接移除第二个Edittext的焦点,并且让我们扫码枪对应的输入框直接获得焦点,让用户无感继续使用扫码枪。

android 外接扫码枪_Android 扫码枪以及焦点的处理相关推荐

  1. android edittext自动获取焦点,Android取消EditText自动获取默认焦点

    Android取消EditText自动获取默认焦点 发布时间:2020-10-02 14:08:30 来源:脚本之家 阅读:142 作者:ganchuanpu 最近在通讯录新建联系人=中,一进入一个页 ...

  2. android tv key事件,Android TV中按键事件和焦点处理总结

    本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...

  3. Android TV中按键事件和焦点处理总结

    本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...

  4. android 外接扫码枪_Android手机(设备)连接扫描枪扫码遇到的问题

    以下内容以我发布前的时间为准,可能之后厂商给设备改进后都没有这些问题. 1.android手机连接扫描枪有些手机显示不了系统键盘 2.连接扫描枪使用的是百度输入法,条码是字母数字组合的扫码会出现乱码( ...

  5. Android设备获取USB扫码枪扫描的内容与可能遇到的问题解决

    这篇文章主要给大家介绍了关于Android设备获取扫码枪扫描内容的方法,以及在开发中可能会遇到的问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们 ...

  6. Android BLE 蓝牙开发-扫码枪集成

    一.蓝牙模式HID与BLE 当扫码枪与手机连接时,通常采用的是蓝牙HID(Human Interface Device)模式.本质上是一个把扫码枪作为一个硬件键盘,按照键盘协议把扫码后的结果逐个输入到 ...

  7. android释放焦点_Android videoview抢占焦点的处理方法

    问题描述: android 机顶盒应用: 应用程序主界面(MainActivity)只有两个控件,一个videoview和一个button. 视频框设置无焦点,按键有焦点. 首次进入应用时焦点正常,聚 ...

  8. 基于Android开发的手持扫码枪APP(附带参考源码)

    扫码枪扫码效果等同于键盘录入,会回调dispatchKeyEvent键盘按下事件. 开发环境:有线扫码枪,支持二维码 文件:url80.ctfile.com/f/25127180-740368576- ...

  9. android释放焦点_android 取消edittext焦点

    页面中如果有EditText会默认获取焦点,如果进入页面时不想让其获取到焦点可以按如下步骤: 1.在布局的最外层添加属性: android:focusable="true" and ...

  10. android中设置控件获得焦点 (转)

    android中,要使控件获得焦点,需要先setFocus,再requestFocus. 以Button为例:                 btn.setFocusable(true);      ...

最新文章

  1. R语言ggplot2可视化:可视化堆叠的直方图、添加每个分组的每个bin的计数标签、在堆叠直方图的bin中的每个分组部分添加数值标签
  2. java开发经验分享_java开发经验分享(一)
  3. Taro+react开发(29)引入固定地址的方式
  4. 信息学奥赛一本通(1007:计算(a+b)×c的值)
  5. 61组第二次团队作业
  6. 如何MATLAB中将一个向量或者矩阵强行转换为列向量
  7. WPF 添加阴影效果
  8. 蓝牙耳机出口欧盟要做什么CE的哪些指令?
  9. 网络调试助手无法连接tcp服务器,W5500 TCP 客户端网络调试助手连不上
  10. 人力资源术语英汉对照(zt)
  11. c语言二维数组学习,C语言学习之二维数组的传参
  12. 为什么不建议在外包公司长期工作及外包公司的简历怎么写
  13. Spring Boot 中的 HttpClient 新贵 Retrofit !
  14. 华为nova7se怎么看云相册_华为nova7SE拍照怎么样?华为nova7SE夜拍照效果如何
  15. 「Tracup」一款拒绝加班的项目管理工具
  16. java hypot_java – 为什么hypot()函数这么慢?
  17. SGI STL的rb_tree浅析
  18. 正交设计 python算法_Python实现正交实验法-高级篇
  19. c语言引入指针的目的,指针,C语言指针完全攻略
  20. 人人都能懂的图灵机原理

热门文章

  1. Graphviz 画图教程
  2. VBA代码片之计算加权平均分
  3. 努力成为一个有本事,没脾气的程序员
  4. excel表格自动添加边框
  5. 浏览器首页被雨林木风篡改( /hao.ylmf.com/u7654.html)
  6. wps word设置多级标题及对应目录
  7. java扫码枪键盘_JAVA读取USB扫描枪
  8. 扫描枪取消回车二维码_扫码枪设置自动回车方法步骤,条码扫描枪不自动回车怎么办...
  9. oracle 两表关联查询
  10. 在线html编辑器 菜鸟,菜鸟教程