安卓系统的扫码输入,首先安卓中按键对应的数值需要从SDK包的KeyEvent.java中查询,这其中的比如
public static final int KEYCODE_A = 29; // a
public static final int KEYCODE_SHIFT_LEFT = 59; //shift
public static final int KEYCODE_ENTER = 66; //回车
public static final int KEYCODE_MINUS = 69; // -
特别注意 扫码内容为 aaAA-回车
实际上按键获取顺序为 29 29 29 59 29 59 69 66
a对应29
A对应29 59
所以在处理输出时,需要先把输入内容暂存到一个StringBuffer中,如果检测到输入keyCode == 59 那么把最后一位的小写变为大写,其中包含一些特殊符号处理
private char getLastKeyUpperCase() {
char outChar;
if (lastKeyCode >= KeyEvent.KEYCODE_A && lastKeyCode <= KeyEvent.KEYCODE_Z) {
//字母
outChar = (char) ('A' + lastKeyCode - KeyEvent.KEYCODE_A);
} else if (lastKeyCode >= KeyEvent.KEYCODE_0 && lastKeyCode <= KeyEvent.KEYCODE_9) {
//数字
outChar = (char) ('0' + lastKeyCode - KeyEvent.KEYCODE_0);
} else {
//其他符号
switch (lastKeyCode) {
case KeyEvent.KEYCODE_PERIOD:
outChar = '.';
break;
case KeyEvent.KEYCODE_MINUS:
outChar = '_';
break;
case KeyEvent.KEYCODE_SLASH:
outChar = '/';
break;
case KeyEvent.KEYCODE_BACKSLASH:
outChar = '|';
break;
default:
outChar = 0;
break;
}
}
return outChar;
}
另外要注意 安卓的键盘输入的值和asc码值不同
比如a在安卓中是29 但是在asc码中是97,所以要有一层转换关系,代码见上面
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。