KeyCode是Android的按键代码,每个按键不管实体的还是虚拟的都对应一个int值,在/framework/base/core/java/android/view/的KeyEvent.java文件中可以查看android所有的keycode。实体的按键需要在驱动层的文件添加。如果驱动部分OK的话,当按键触发时,Android会在key上报。可用adb查看(先adb shell 链接后 在用adb event -l 命令。如下图,触发按键后有如下信息,分别是event type、event code、event value。

Android8.0 在framework中添加KeyCode_第1张图片

当得到上图你所需要的key信息后就可以在framework中将要添加的keycode添加进去了。

1./frameworks/base/data/keyboards/Generic.kl 

      在该文件添加key的value值并且定义key的名称:key 645   XXXXXX  其中645和xxxx为驱动定义的value值,XXXXXX在madev.h中定义的,645在input-event-codes.h中定义的(0x285 == 645) 。Android8.0 在framework中添加KeyCode_第2张图片

2./frameworks/native/include/input/InputEventLabels.h

      在该文件的static const InputEventLabel KEYCODES[]{}中添加: DEFINE_KEYCODE(XXXXXX),其中xxxx为驱动层上报的key。

3./frameworks/native/include/android/keycodes.h

      在该文件的enum{}里添加自定义的key值和value值 AKEYCODE_XXXXXX = 290 (这里的值与驱动层无关,是自己定义的)。

需要注意的地方如果keycode的值在以下范围内,是无效的。

a.小于272    b.大于352   c.大于等于256且小于272   d大于等于288且小于320

4./frameworks/base/core/java/android/view/KeyEvent.java

      在该文件定义keycod: public static final int KEYCODE_XXXXXX = 290; 在此需要注意几个方法:isSystemKey(int keyCode),isMediaKey(int keyCode) 等等。是什么类型的key就添加到该方法里面。

5./frameworks/base/core/res/res/values/attrs.xml

      最后在该文件的结构下添加: 。到此keycode在/frameworks下算是添加成功了。编译frameworks.jar就可以用了。

 

 

 

更多相关文章

  1. android评分条RatingBar自定义设置
  2. Android深入浅出自定义控件(一)
  3. Android 自定义组合控件小结
  4. android 自定义SeekBar(拖动条)
  5. Android 自定义View及其在布局文件中的使用示例
  6. Android 手把手进阶自定义View(九)- 自动换行 ViewGroup
  7. Android中自定义属性基本步骤
  8. Android平台开发-Android keypad map-Android按键事件
  9. [Android 界面] Android: 自定义DIALOG

随机推荐

  1. 【Android】Android 广播大全
  2. Android程序开发中关于设置全屏无效问题
  3. android去除ImageButton白色边框
  4. Android API中文文档系列Manifest
  5. Android利用sqlite制作简单登录界面
  6. Google收购Skype的最好理由:Android
  7. Android android:gravity和android:layou
  8. Android 布局学习利器-Hierarchy Viewer
  9. android studio编译android M时无法使用o
  10. Android Scrollview