首页 > 资讯 > 张生荣

张生荣

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

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

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

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

重写onKeyDown方法

@Override public 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 来接收处理过的数据。大概就这样吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

相关知识

张春荣
张春荣医生简介
张荣臣:《王者荣耀》健康系统怎么解除 健康系统解除方法介绍
《王者荣耀S22张良出装思路详解》(探索张良出装策略)
她是张国荣的初恋,18岁被渣男哄骗未婚生子,如今暴瘦至今未婚
上海玫瑰张炜院长荣登2024新氧绿宝石医生玻尿酸塑形榜单
华荣医生简介
银诺医药荣获2023“张江生命健康产业年度新锐企业”
张家口吸脂减肥靠谱医生推荐:曾高、余花、祁荣、洪伟,技术娴熟、服务热情!
袁荣涛整形医生

网址: 张生荣 https://m.trfsz.com/newsview1805911.html