Android 读取扫码枪内容(条形码)
近期有个需求,安卓设备外接扫码枪,系统读取扫码枪扫描的内容。
网上查了一些例子,拿过来用的时候都不太好使,最后没办法,自己实现了一个(目前只支持英文字母和英文符号)。
代码如下:
1. 重写Activity的onKeyDown方法,收集扫码枪返回的keycode。
ArrayList<Integer> scannedCodes = new ArrayList<Integer>();@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode!= KeyEvent.KEYCODE_ENTER){ //扫码枪以回车为结束scannedCodes.add(keyCode);}else{ //结束handleKeyCodes();}return super.onKeyDown(keyCode, event);
}
2. 处理接收倒的keycode,handleKeyCodes()方法。
private void handleKeyCodes(){FnString fnString = new FnString();String result = "";boolean hasShift = false;for(int keyCode : scannedCodes){result += fnString.keyCodeToChar(keyCode, hasShift);hasShift = (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT); }Toast.makeText(context, result, Toast.LENGTH_LONG).show();scannedCodes.clear();
}
3. keycode转换为字符的方法
/** keyCode转换为字符 */
public String keyCodeToChar(int code, boolean isShift){switch(code){case KeyEvent.KEYCODE_SHIFT_LEFT: return "";//数字键10个 + 符号10个case KeyEvent.KEYCODE_0: return isShift ? ")" : "0";case KeyEvent.KEYCODE_1: return isShift ? "!" : "1";case KeyEvent.KEYCODE_2: return isShift ? "@" : "2";case KeyEvent.KEYCODE_3: return isShift ? "#" : "3";case KeyEvent.KEYCODE_4: return isShift ? "$" : "4";case KeyEvent.KEYCODE_5: return isShift ? "%" : "5";case KeyEvent.KEYCODE_6: return isShift ? "^" : "6";case KeyEvent.KEYCODE_7: return isShift ? "&" : "7";case KeyEvent.KEYCODE_8: return isShift ? "*" : "8";case KeyEvent.KEYCODE_9: return isShift ? "(" : "9";//字母键26个小写 + 26个大写case KeyEvent.KEYCODE_A: return isShift ? "A" : "a";case KeyEvent.KEYCODE_B: return isShift ? "B" : "b";case KeyEvent.KEYCODE_C: return isShift ? "C" : "c";case KeyEvent.KEYCODE_D: return isShift ? "D" : "d";case KeyEvent.KEYCODE_E: return isShift ? "E" : "e";case KeyEvent.KEYCODE_F: return isShift ? "F" : "f";case KeyEvent.KEYCODE_G: return isShift ? "G" : "g";case KeyEvent.KEYCODE_H: return isShift ? "H" : "h";case KeyEvent.KEYCODE_I: return isShift ? "I" : "i";case KeyEvent.KEYCODE_J: return isShift ? "J" : "j";case KeyEvent.KEYCODE_K: return isShift ? "K" : "k";case KeyEvent.KEYCODE_L: return isShift ? "L" : "l";case KeyEvent.KEYCODE_M: return isShift ? "M" : "m";case KeyEvent.KEYCODE_N: return isShift ? "N" : "n";case KeyEvent.KEYCODE_O: return isShift ? "O" : "o";case KeyEvent.KEYCODE_P: return isShift ? "P" : "p";case KeyEvent.KEYCODE_Q: return isShift ? "Q" : "q";case KeyEvent.KEYCODE_R: return isShift ? "R" : "r";case KeyEvent.KEYCODE_S: return isShift ? "S" : "s";case KeyEvent.KEYCODE_T: return isShift ? "T" : "t";case KeyEvent.KEYCODE_U: return isShift ? "U" : "u";case KeyEvent.KEYCODE_V: return isShift ? "V" : "v";case KeyEvent.KEYCODE_W: return isShift ? "W" : "w";case KeyEvent.KEYCODE_X: return isShift ? "X" : "x";case KeyEvent.KEYCODE_Y: return isShift ? "Y" : "y";case KeyEvent.KEYCODE_Z: return isShift ? "Z" : "z";//符号键11个 + 11个case KeyEvent.KEYCODE_COMMA: return isShift ? "<" : ",";case KeyEvent.KEYCODE_PERIOD: return isShift ? ">" : ".";case KeyEvent.KEYCODE_SLASH: return isShift ? "?" : "/";case KeyEvent.KEYCODE_BACKSLASH: return isShift ? "|" : "\\";case KeyEvent.KEYCODE_APOSTROPHE: return isShift ? "\"" : "'";case KeyEvent.KEYCODE_SEMICOLON: return isShift ? ":" : ";";case KeyEvent.KEYCODE_LEFT_BRACKET: return isShift ? "{" : "[";case KeyEvent.KEYCODE_RIGHT_BRACKET: return isShift ? "}" : "]";case KeyEvent.KEYCODE_GRAVE: return isShift ? "~" : "`";case KeyEvent.KEYCODE_EQUALS: return isShift ? "+" : "=";case KeyEvent.KEYCODE_MINUS: return isShift ? "_" : "-";default: return "?";}
}
效果1:
效果2:
Android 读取扫码枪内容(条形码)相关推荐
- Android 读取扫码枪的内容,可以读取条形码 ,二维码
很多文章都说 码枪其实相当于一个物理输入设备 ,获取呢,其实代码并不多,下面来实现下效果 ,这里已经用在了项目 效果还非常不错, 方法 1 public class MainActivity exte ...
- android 读取文件内容,Android读写文件 获取文件并读取写入数据
一. 从 resource 中的 raw 文件夹中获取文件并读取数据(资源文件只能读不能写) String res = ""; try{ InputStream in ...
- Android 读取文件内容
如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法. FileInputStr ...
- androidの读取短信内容
androidの读取短信内容 1. 读取短信内容,很简单,直接上代码 <span style="font-size:14px;"> public Uri SMS_INB ...
- Android 读取本地txt文件中的内容
Android 读取本地txt文件中的内容 import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt ...
- Android USB 扫码枪获取扫描内容
最近做了关于在Android设备上外接扫码的项目,在此记录一下关于Android USB扫码枪获取内容的问题 首先我这边使用是USB HID的扫码枪,即插即用,只需要在界面上有一个带有焦点的EditT ...
- Android读取assets目录下文件数据内容
Android读取assets目录下文件数据内容 Android的体系架构设计中,assets目录下的数据内容(图片.文件等等)将不会被Android系统压缩.二次处理等,assets目录下的文件 ...
- windows读取android手机内容,Win10 PC到Android手机共享内容的技巧
最近推出的Your Phone应用程序在很短的时间内在Windows 10用户中获得了极大的欢迎.用户可以直接使用他们的桌面访问存储在手机内存中的消息和照片.好消息是,您现在可以将Windows 10 ...
- Android读取/dev/graphics/fb0 屏幕截图
Android屏幕截图有很多方式这里只使用其中一种截图 主要是读取/dev/graphics/fb0,进行转换,复杂点就在如何把读取的数据进行转换. 可以参考一下这篇文章:http://blog.ch ...
最新文章
- 引入外部化的配置文件
- 中关村-DIY操作系统之不分区安装Ubuntu系统
- [机器学习] gcForest 官方代码详解
- JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
- 使用Kubeadm搭建Kubernetes(1.12.2)集群
- [安卓] 2、使用2中方法做按钮监听和图片按钮使用
- android studio左边选择渠道,AndroidStudio简单使用(二):左侧Structure
- Timeline使用手册
- ARC098E Range Minimum Queries
- RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
- MFC程序设计——标尺的例子
- ADS2017破解后重启显示license失效,需要把EESoft Flexnet Licence Server启动类型设置为自动
- Matlab常用的滤波函数集合(会陆续更新详解)
- Paypal无限转圈
- 到底买苹果XS还是XR_iPhone XS 和 XR 买哪个?10 个理由告诉你 XS 更好,贵是有原因的...
- 两步彻底关闭Windows默认共享文件夹(含IPC$)
- 如何把PDF转Word?建议收藏这些方法
- java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署
- JavaScript调用原生API获取手机型号
- 电脑收不到UDP广播