Method for android to read the data of scan code module
- 2021-12-21 05:02:21
- OfStack
In this paper, we share the specific code of android reading scan code module data for your reference. The specific contents are as follows
android Read Scan Module Data * * Undertake Read Data in dispatchKeyEvent Method * *
Take over the read data in dispatchKeyEvent method
private StringBuilder mScanCodeBuilder = new StringBuilder();
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
LogUtil.d(TAG, "dispatchKeyEvent " + event.getAction() + ", " + event.getKeyCode());
checkLetterStatus(event);// Judge upper and lower case letters
if (event.getAction() == KeyEvent.ACTION_DOWN) {
mScanCodeBuilder.append(getInputCode(event));
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
// If it is Enter key, return directly
String scanResult = mScanCodeBuilder.toString();
mScanCodeBuilder.setLength(0);
LogUtil.d(TAG, "dispatchKeyEvent, " + scanResult);
String scanResults = scanResult.replace(" ", "");
} else {
// Delay post If 500ms Inside, there are other events
mHandler.removeCallbacks(mScanningFishedRunnable);
mHandler.postDelayed(mScanningFishedRunnable, 500);
}
return true;
}
return super.dispatchKeyEvent(event);
}
Judge upper and lower case letters
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) {
// Press shift Key, representing uppercase
mCaps = true;
} else {
// Loosen shift Key for lowercase
mCaps = false;
}
}
}
Read character method
private char getInputCode(KeyEvent event) {
int keyCode = event.getKeyCode();
char aChar;
if (keyCode >= KeyEvent.KEYCODE_A && keyCode <= KeyEvent.KEYCODE_Z) {
// Alphabet
aChar = (char) ((mCaps ? 'A' : 'a') + keyCode - KeyEvent.KEYCODE_A);
} else if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
// Figures
aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0);
} else {
// Symbol
switch (keyCode) {
case KeyEvent.KEYCODE_GRAVE:
aChar = '`';
break;
case KeyEvent.KEYCODE_COMMA:
aChar = ',';
break;
case KeyEvent.KEYCODE_APOSTROPHE:
aChar = '\'';
break;
case KeyEvent.KEYCODE_POUND:
aChar = '#';
break;
case KeyEvent.KEYCODE_STAR:
aChar = '*';
break;
case KeyEvent.KEYCODE_PERIOD:
aChar = '.';
break;
case KeyEvent.KEYCODE_MINUS:
aChar = mCaps ? '_' : '-';
break;
case KeyEvent.KEYCODE_SLASH:
aChar = '/';
break;
case KeyEvent.KEYCODE_BACKSLASH:
aChar = mCaps ? '|' : '\\';
break;
case KeyEvent.KEYCODE_EQUALS:
aChar = '=';
break;
case KeyEvent.KEYCODE_SEMICOLON:
aChar = ';';
break;
case KeyEvent.KEYCODE_PLUS:
aChar = '+';
break;
case KeyEvent.KEYCODE_AT:
aChar = '@';
break;
case KeyEvent.KEYCODE_LEFT_BRACKET:
aChar = '[';
break;
case KeyEvent.KEYCODE_RIGHT_BRACKET:
aChar = ']';
break;
default:
aChar = ' ';
break;
}
}
Log.d(TAG, "char" + aChar);
return aChar;
}
Delay 500 millisecond correlation
private Handler mHandler = new Handler(this);
private final Runnable mScanningFishedRunnable=new Runnable() {
@Override
public void run() {
}
};