android讀取掃碼模組數(shù)據(jù)的方法
更新時間:2021年09月28日 11:40:49 作者:蝦皮條
這篇文章主要為大家詳細介紹了android讀取掃碼模組數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了android讀取掃碼模組數(shù)據(jù)的具體代碼,供大家參考,具體內(nèi)容如下
android讀取掃碼模組數(shù)據(jù) **在dispatchKeyEvent方法中承接讀取的數(shù)據(jù)**
在dispatchKeyEvent方法中承接讀取的數(shù)據(jù)
private StringBuilder mScanCodeBuilder = new StringBuilder();
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
LogUtil.d(TAG, "dispatchKeyEvent " + event.getAction() + ", " + event.getKeyCode());
checkLetterStatus(event);//判斷大小寫字母
if (event.getAction() == KeyEvent.ACTION_DOWN) {
mScanCodeBuilder.append(getInputCode(event));
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
//若為回車鍵,直接返回
String scanResult = mScanCodeBuilder.toString();
mScanCodeBuilder.setLength(0);
LogUtil.d(TAG, "dispatchKeyEvent, " + scanResult);
String scanResults = scanResult.replace(" ", "");
} else {
//延遲post,若500ms內(nèi),有其他事件
mHandler.removeCallbacks(mScanningFishedRunnable);
mHandler.postDelayed(mScanningFishedRunnable, 500);
}
return true;
}
return super.dispatchKeyEvent(event);
}
判斷大小寫字母
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;
}
}
}
讀取字符方法
private char getInputCode(KeyEvent event) {
int keyCode = event.getKeyCode();
char aChar;
if (keyCode >= KeyEvent.KEYCODE_A && keyCode <= KeyEvent.KEYCODE_Z) {
//字母
aChar = (char) ((mCaps ? 'A' : 'a') + keyCode - KeyEvent.KEYCODE_A);
} else if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
//數(shù)字
aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0);
} else {
//符號
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;
}
延遲500毫秒相關(guān)
private Handler mHandler = new Handler(this);
private final Runnable mScanningFishedRunnable=new Runnable() {
@Override
public void run() {
}
};
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android4.0平板開發(fā)之隱藏底部任務(wù)欄的方法
這篇文章主要介紹了Android4.0平板開發(fā)之隱藏底部任務(wù)欄的方法,結(jié)合實例形式較為詳細的分析了Android隱藏于顯示底部任務(wù)欄的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
Android RecyclerView網(wǎng)格布局(支持多種分割線)詳解(2)
這篇文章主要為大家詳細介紹了Android RecyclerView網(wǎng)格布局,支持多種分割線,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

