Android4.1添加新的按键(3)
2015-09-18 20:52
357 查看
添加新的物理按键 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 测试下这个两个键是否成功上报,如果上报成功,就可以在自己的应用中添加与这个按键相关的逻辑处理。
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 测试下这个两个键是否成功上报,如果上报成功,就可以在自己的应用中添加与这个按键相关的逻辑处理。
相关文章推荐
- android下载图片显示总结
- Android开发环境的调研
- Android之ADB常用命令
- 弄明白Android 接口回调机制
- Android Studio配置Esri ArcGIS
- Android四大组件
- android通讯录根据首字母分组(一)
- 使用AutoCompleteTextView和MultiAutoCompleteTextView实现输入自动匹配
- Android——Hander和AsyncTask的使用
- Android四大组件——Service详解
- Android内存管理、Android中Dalvik和JVM的区别
- ubuntu14.04下载android source code
- android 开发 小技巧
- android log 日志管理
- Android 解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
- 你是不是也被Android Private Libraries、Referenced Libraries、android Dependency搞晕了~~
- Android 自定义View实现SlideSwitchView
- android:windowSoftInputMode属性详解
- android init.rc文件语法详解
- Android CheckBox实现SwitchButton