Android4.1添加新的按鍵(3)

添加新的物理按鍵 DECT_REGISTER, DECT_PHONE
1.kl文件添加按鍵碼映射,251,252 是 驅動上報上來的鍵值
key 251 DECT_REGISTER
key 252 DECT_PHONE
2.frameworks/base/include/androidfw/KeycodeLabels.h 
 對KEYCODES,添加按鍵碼
static const KeycodeLabel KEYCODES[] = {
...
 { "DECT_REGISTER",220},
 { "DECT_PHONE",221},
3.frameworks/base/core/res/res/values/attr.xml
<enum name="KEYCODE_DECT_REGISTER" value="220"/>
<enum name="KEYCODE_DECT_PHONE" value="221"/>
4.frameworks/native/include/android/keycode.h
enum {
    AKEYCODE_UNKNOWN         = 0,
    ....
    ....
添加
AKEYCODE_DECT_REGISTER   =220,
AKEYCODE_DECT_PHONE      =221,
5.frameworks/base/core/java/android/view/KeyEvent.java
添加 
 public static final int KEYCODE_DECT_REGISTER=   220;
 public static final int KEYCODE_DECT_PHONE=221;
修改 LAST_KEYCODE  和 KEYCODE_SYMBOLIC_NAMES
private static final int LAST_KEYCODE           = KEYCODE_DECT_REGISTER;
// NOTE: If you add a new keycode here you must also add it to:
//  isSystem()
//  native/include/android/keycodes.h
//  frameworks/base/include/ui/KeycodeLabels.h
//  external/webkit/WebKit/android/plugins/ANPKeyCodes.h
//  frameworks/base/core/res/res/values/attrs.xml
//  emulator?
//  LAST_KEYCODE
//  KEYCODE_SYMBOLIC_NAMES
private static void populateKeycodeSymbolicNames() {
        SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES;
        names.append(KEYCODE_UNKNOWN, "KEYCODE_UNKNOWN");
        ...
        ...
        names.append(KEYCODE_DECT_REGISTER, "KEYCODE_DECT_REGISTER");
        names.append(KEYCODE_DECT_PHONE, "KEYCODE_DECT_PHONE");
}
修改 isSystem(),追蹤jni需要修改frameworks/base/lib/androidrw/input.cpp  KeyEvent::isSystemKey
bool KeyEvent::isSystemKey(int32_t keyCode) {
    switch (keyCode) {
        ....
        case AKEYCODE_DECT_REGISTER:
        case AKEYCODE_DECT_PHONE:
            return true;
    }   
    return false;
}
6.external/webkit/Source/WebKit/android/plugins/ANPKeyCodes.h
修改
   enum ANPKeyCodes {
    kUnknown_ANPKeyCode = 0,
   ...
   ...
   kDectRegister_ANPKeyCode=220,
   kDectPhone_ANPKeyCode=221,
}
以上修改完成後,可以在PhoneWindowManager 測試下這個兩個鍵是否成功上報,如果上報成功,就可以在自己的應用中添加與這個按鍵相關的邏輯處理。
發佈了113 篇原創文章 · 獲贊 329 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章