Android USB 扫码枪获取扫描内容
最近做了关于在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 扫码枪获取扫描内容相关推荐
- Android 获取扫码枪的扫描内容
思路: 重写Activity的dispatchKeyEvent()方法 将获取到的内容自定义处理 然后再回调得到扫描内容 import android.support.v7.app.AppComp ...
- Android 设备蓝牙连接扫描枪获取扫描内容
Android 设备蓝牙连接扫描枪获取扫描内容 标签(空格分隔): 未分类 条形扫描枪主要可以扫描条形码和二维码等,扫描速度比手机扫描设备快得多,本文简单介绍android 通过蓝牙监听蓝牙连接,当扫 ...
- USB扫码枪获取数据流的实现方式
硬件条件: OTG接口转换器(或者自带usb接口的设备(大头)) USB扫码枪(支持USB虚拟串口) 安卓设备 实现方式: 串口方式 USB方式 使用场景: 在扫码枪连接机器的时候,当扫码枪扫描到内容 ...
- uniapp+native.js监听android usb扫码枪
最近项目遇到这样的需求,安卓系统收银机,需要无输入框焦点的时候监听usb的扫码枪扫描数据,应用的技术是uniapp集成到android原生里.刚开始一直用安卓写监听方法,然后再把扫码的数据抛回到uni ...
- Android通过扫码枪获取到商品的编码 完成自动搜索
最近要做一个大型的Android设备的软件,是超市前台收银的设备,机器上有外接扫码枪等设备,这里的扫码枪指的是外接USB扫码枪 其本质是模拟输入法的一段输入流 通过获取焦点的EditText 可以直接 ...
- (五十四)Android O WiFi 获取扫描结果流程梳理
前言:之前在(五十) Android O WiFi的扫描流程梳理 已经梳理过扫描流程了,那扫描完的结果会呈现在设置的WiFi界面,那扫描结果是如何获取的呢? 1. wifi扫描结果简介 WiFi的扫描 ...
- Android中Spanner获取选中内容和选中位置,根据位置选择对象
作为一名菜鸟,关于spanner获取选中的内容文字代码,网上后很多 但是根据给出的位置来自动选择对象,这个代码一直没找到 后来找人问了问,才知道就一句话的事,特意在这里记录下 array.xml &l ...
- Android设备获取USB扫码枪扫描的内容与可能遇到的问题解决
这篇文章主要给大家介绍了关于Android设备获取扫码枪扫描内容的方法,以及在开发中可能会遇到的问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们 ...
- Android设备获取扫码枪扫描内容
条形码扫码枪现在随处可见,可以很迅速地扫描出条形码内容,比什么手机相机扫码快了不是一点两点. 为了节约成本,扫码枪可以直接通过蓝牙连接android或其他设备. 那么android设备如何通过蓝牙获取 ...
最新文章
- 百度也出分享(百度分享)
- 【Socket网络编程】12. send()、recv()、sendto() 和 recvfrom() 函数解析
- java切割文件_Java如何将大文件切割成小文件
- Eclipse中代码编辑背景颜色修改和XML字体修改
- Atitit html5 Canvas 如何自适应屏幕大小
- 外军网络空间作战简报
- 随书光盘资源下载/提取码(二)
- 开闭原则应用-书店打折Java代码实现
- T-test检验中的P,α理解
- 中南林业科技大学Java实验报告八:包与接口
- 180822 逆向-网鼎杯(2-1)
- 【系统化学习】CSDN算法技能树测评
- timestamp与datetime使用
- Neo4j - CQL使用
- vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
- Python中杨辉三角的理解(廖雪峰教程例)
- notify() 和notifyAll()区别
- 学计算机的电脑用i5还是i7好,大学生用i5还是i7 i5和i7该怎么选择
- Git 学习笔记 ignore 忽略文件
- 手机端GSP地图的定位 并且在网页上显示地图的轨迹
热门文章
- cuda,显卡,pytorch三者配置相关知识--学习笔记
- 作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植
- 【WIP】Seastar框架学习
- Node.js: redis 和 ioredis 的基本使用
- flutter在导航栏处实现对两个列表的点击事件
- 数据结构课程设计之区块链工作原理模拟设计
- 使用PHP实现图片上传
- 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )
- Hadoop第七天--MapReduceYarn详解(二)
- 【论文阅读|深读】DRNE:Deep Recursive Network Embedding with Regular Equivalence