最近做了关于在Android设备上外接扫码的项目,在此记录一下关于Android USB扫码枪获取内容的问题

首先我这边使用是USB HID的扫码枪,即插即用,只需要在界面上有一个带有焦点的EditText ,就可以获取扫码枪扫描的内容。

是不是感觉很简单,但是今天我这里是讲的是在没有EditText 的情况下获取扫码枪扫描的内容。

USB HID扫码枪会将扫描出来的内容转化为键盘事件,对应的就是Android中的KeyEvent事件,所以我们只需要在我们的activity中

重写onKeyDown方法

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {checkLetterStatus(event);keyCodeToNum(keyCode);if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {Log.e("键盘事件", buffer.toString());buffer.delete(0, buffer.length());return true;}return false;}

上面我们说了扫码枪是响应我们的键盘事件,所以当扫码枪每扫描到一个字符的时候,就相当于按下了我们键盘上的对应按键,也就是keyCode,因此我们只需要处理这个keyCode就行了。

下面我把checkLetterStatus()检查是否大小写的方法跟keyCodeToNum()根据对应的keycode转换对应的数字跟字母

 //检查shift键private void checkLetterStatus(KeyEvent event) {int keyCode = event.getKeyCode();if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {if (event.getAction() == KeyEvent.ACTION_DOWN) {//按着shift键,表示大写mCaps = true;} else {//松开shift键,表示小写mCaps = false;}}}//根据keycode得到对应的字母和数字private void keyCodeToNum(int keycode) {if (keycode >= KeyEvent.KEYCODE_A && keycode <= KeyEvent.KEYCODE_Z) {if (mCaps) {buffer.append(map.get(keycode).toUpperCase());} else {buffer.append(map.get(keycode));}} else if ((keycode >= KeyEvent.KEYCODE_0 && keycode <= KeyEvent.KEYCODE_9)) {buffer.append(keycode - KeyEvent.KEYCODE_0);} else {//暂不处理特殊符号}}

上面的方法里面有个map,是用来存储字母的

Map<Integer, String> map = new HashMap<>();        map.put(29, "a");map.put(30, "b");map.put(31, "c");map.put(32, "d");map.put(33, "e");map.put(34, "f");map.put(35, "g");map.put(36, "h");map.put(37, "i");map.put(38, "g");map.put(39, "k");map.put(40, "l");map.put(41, "m");map.put(42, "n");map.put(43, "0");map.put(44, "p");map.put(45, "q");map.put(46, "r");map.put(47, "s");map.put(48, "t");map.put(49, "u");map.put(50, "v");map.put(51, "w");map.put(52, "x");map.put(53, "y");map.put(54, "z");

最后用一个StringBuffer 来接收处理过的数据。大概就这样吧!

Android USB 扫码枪获取扫描内容相关推荐

  1. Android 获取扫码枪的扫描内容

    思路: 重写Activity的dispatchKeyEvent()方法  将获取到的内容自定义处理  然后再回调得到扫描内容 import android.support.v7.app.AppComp ...

  2. Android 设备蓝牙连接扫描枪获取扫描内容

    Android 设备蓝牙连接扫描枪获取扫描内容 标签(空格分隔): 未分类 条形扫描枪主要可以扫描条形码和二维码等,扫描速度比手机扫描设备快得多,本文简单介绍android 通过蓝牙监听蓝牙连接,当扫 ...

  3. USB扫码枪获取数据流的实现方式

    硬件条件: OTG接口转换器(或者自带usb接口的设备(大头)) USB扫码枪(支持USB虚拟串口) 安卓设备 实现方式: 串口方式 USB方式 使用场景: 在扫码枪连接机器的时候,当扫码枪扫描到内容 ...

  4. uniapp+native.js监听android usb扫码枪

    最近项目遇到这样的需求,安卓系统收银机,需要无输入框焦点的时候监听usb的扫码枪扫描数据,应用的技术是uniapp集成到android原生里.刚开始一直用安卓写监听方法,然后再把扫码的数据抛回到uni ...

  5. Android通过扫码枪获取到商品的编码 完成自动搜索

    最近要做一个大型的Android设备的软件,是超市前台收银的设备,机器上有外接扫码枪等设备,这里的扫码枪指的是外接USB扫码枪 其本质是模拟输入法的一段输入流 通过获取焦点的EditText 可以直接 ...

  6. (五十四)Android O WiFi 获取扫描结果流程梳理

    前言:之前在(五十) Android O WiFi的扫描流程梳理 已经梳理过扫描流程了,那扫描完的结果会呈现在设置的WiFi界面,那扫描结果是如何获取的呢? 1. wifi扫描结果简介 WiFi的扫描 ...

  7. Android中Spanner获取选中内容和选中位置,根据位置选择对象

    作为一名菜鸟,关于spanner获取选中的内容文字代码,网上后很多 但是根据给出的位置来自动选择对象,这个代码一直没找到 后来找人问了问,才知道就一句话的事,特意在这里记录下 array.xml &l ...

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

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

  9. Android设备获取扫码枪扫描内容

    条形码扫码枪现在随处可见,可以很迅速地扫描出条形码内容,比什么手机相机扫码快了不是一点两点. 为了节约成本,扫码枪可以直接通过蓝牙连接android或其他设备. 那么android设备如何通过蓝牙获取 ...

最新文章

  1. 百度也出分享(百度分享)
  2. 【Socket网络编程】12. send()、recv()、sendto() 和 recvfrom() 函数解析
  3. java切割文件_Java如何将大文件切割成小文件
  4. Eclipse中代码编辑背景颜色修改和XML字体修改
  5. Atitit html5 Canvas 如何自适应屏幕大小
  6. 外军网络空间作战简报
  7. 随书光盘资源下载/提取码(二)
  8. 开闭原则应用-书店打折Java代码实现
  9. T-test检验中的P,α理解
  10. 中南林业科技大学Java实验报告八:包与接口
  11. 180822 逆向-网鼎杯(2-1)
  12. 【系统化学习】CSDN算法技能树测评
  13. timestamp与datetime使用
  14. Neo4j - CQL使用
  15. vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
  16. Python中杨辉三角的理解(廖雪峰教程例)
  17. notify() 和notifyAll()区别
  18. 学计算机的电脑用i5还是i7好,大学生用i5还是i7 i5和i7该怎么选择
  19. Git 学习笔记 ignore 忽略文件
  20. 手机端GSP地图的定位 并且在网页上显示地图的轨迹

热门文章

  1. cuda,显卡,pytorch三者配置相关知识--学习笔记
  2. 作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植
  3. 【WIP】Seastar框架学习
  4. Node.js: redis 和 ioredis 的基本使用
  5. flutter在导航栏处实现对两个列表的点击事件
  6. 数据结构课程设计之区块链工作原理模拟设计
  7. 使用PHP实现图片上传
  8. 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )
  9. Hadoop第七天--MapReduceYarn详解(二)
  10. 【论文阅读|深读】DRNE:Deep Recursive Network Embedding with Regular Equivalence