掃碼槍中的大小寫處理以及按鍵對應關係

安卓系統的掃碼輸入,首先安卓中按鍵對應的數值須要從SDK包的KeyEvent.java中查詢,這其中的好比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 那麼把最後一位的小寫變爲大寫,其中包含一些特殊符號處理spa

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,因此要有一層轉換關係,代碼見上面code

圖片描述

相關文章
相關標籤/搜索