车机开发之添加自定义键

S700平台即安卓5.1.1系统添加额外的自定义键值按键:
在Android的原生系统中键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的;像我们做车机项目的,添加新按键键值太易见了,比如将倒车检测做成新自定义键值按键,我们需要到多个文件去添加定义代码,但是请记住两点脉络即可,第一个脉络属于理论是ScanCode -> KeyCodeLabel -> KeyCode -> Keyevent即键扫描码 -> 键标识符 -> 键码值 -> 键码处理,这是按系统底层到顶层的逻辑思考;第二个脉络那就属于实践了 -> 不管其他先直接来到KeyEvent.java类去照葫芦画瓢也定义一个键码变量如public static final int KEYCODE_CARBACK = 260;(倒车检测),意思是倒车检测脚信号一旦有变化就从底层一层一层将信号传递到应用层,最后应用层就认为是底层发送类似Home键和Back键的健码来处理即可;在定义该键码变量时请到KeyEvent类中最后去定义,什么意思呢?就是说KeyEvent类会定义很多键码成员变量,从0~几百都会被定义,只要到最后再添加一行定义自己的键码成员变量即可,为什么建议到最后,一方面是方便查找并和系统其他已然定义的区分开来,最重要的是在最后定义时会看到如下几行注释:
// NOTE: If you add a new keycode here you must also add it to:
//  isSystem()
//  isWakeKey()
//  frameworks/native/include/android/keycodes.h
//  frameworks/native/include/input/InputEventLabels.h
//  frameworks/base/core/res/res/values/attrs.xml
//  emulator?
//  LAST_KEYCODE
这几行注释就是告诉需要到哪些地方去做更改或添加,这样的话就不需要刻意去记住在哪里做了修改了,只需要记住来KeyEvent.java类中的最后去定义即可,后面的工作按照这个提示就可完成;
最后还是把添加新自定义按键码所涉及到的文件都陈列一下,并把目录路径发一下,如下:
        涉及到的文件:input.h文件 -> *.kl文件 -> keycodes.h文件 -> KeyEvent.java文件 ->attrs.xml文件

        文件路径:    1. input.h文件在 android\external\kernel-headers\original\uapi\linux目录下

                      2. *.kl文件的文件名是不确定的,有可能是自己新建的或者在其他kl文件中定义,请以自己的项目目录为准,    我的kl文件是Vendor_3721_Product_0700_Version_0621.kl,路径是在android\device\actions\s700_cb6\keylayout目录下,Vendor_3721_Product_0700_Version_0621.kl里就一句代码 -> key 249 CARBACK

                     3. keycodes.h文件是在android\frameworks\native\include\android目录下,添加的代码就是在enum枚举类中添加AKEYCODE_CARBACK  = 260

    4.KeyEvent.java文件是在android\frameworks\base\core\java\android\view目录下,添加的代码如上面所说
    5.attrs.xml文件是在android\frameworks\base\core\res\res\values目录,添加的代码就是在<attr name="keycode">节点下添加<enum name="KEYCODE_CARBACK" value="260" />即可

注:本人的安卓平台是5.1.1,以上所有涉及到的目录和文件名请以自己的平台和项目路径为准,仅为参考,估计区别不会太大

猜你喜欢

转载自blog.csdn.net/wzh048503/article/details/80423437