zoukankan      html  css  js  c++  java
  • android 中如何添加新的键值,实现更多功能

    android 中如何添加新的键值,实现更多功能

    摘自这个网站:http://hi.chinaunix.net/?uid-21747227-action-viewspace-itemid-48301


     在android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢?

             对keypad来说,涉及到的文件有以下几个:
            1,/vendor/qcom/7k_ffa_keypad.kl
                   首先在此文件中,添加新的键值信息:Example: key   123    WLS   flag
                  注意:新加的键值不要与已有的重复。

            2.  kernel/arch/arm/mach-msm/keypad_surf_ffa.c
                  在keypad对应的键位添加自定义的键码  如 :123

           3.   frameworks/base/include/ui/keycodeLabels.h
                   在数组keycodes 中添加 新定义的信息
                    { "MUTE", 91 },  { "WLS" , 92 }
                   枚举类型 KeyCode 中添加
                        kKeyCodeMute = 91
                        kKeyCodeWLS  = 92

           4.  frameworks/base/core/res/res/values/attrs.xml
                    <enum name="KEYCODE_MUTE"  value="91"/>
                   <enum name="KEYCODE_WLS" value="92" />

          5.   frameworks/base/core/java/android/view/KeyEvent.java
                  public static final int KEYCODE_MUTE          = 91;
                  public static final int KEYCODE_WLS            = 92;
                  注意:       private static final int LAST_KEYCODE    = KEYCODE_MUTE;
                  应改为:   private static final int LAST_KEYCODE    = KEYCODE_WLS;
                  
                 在函数 public final boolean isSystem() 中,同样需要添加:
                    case KEYCODE_SEARCH:
                    case KEYCODE_WLS:

                 通过以上的更改,新的键值就添加上去了,由于更改了 KeyEvent,影响到了API,
                 所以需要make update-api
                
                如果对新键值进行处理,可以通过获取相应的keycode,对它进行处理;
                对于按键事件的处理一般如下文件中
        6.   frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
            
              综上可知,我们可以根据需求定义自己的键值,并对键值所对应的事件信息进行合理化处理。


    注:
    7k_ffa_keypad.kl是专门给7k_ffa_keypad输入设备使用的keylayout文件,所以修改7k_ffa_keypad.kl文件只是给键盘输入增加键值。如果是其他设备的输入,如x_input,而且当没有x_iput.kl存在的时候,那么默认的kl文件就是qwerty.kl(android-root/development/emulator/keymaps/qwerty.kl)

    这个很重要。也就是说需要实现明白添加的键值是否是7k_ffa_keypad的input event
  • 相关阅读:
    为什么java的接口的方法是public abstract修饰?为什么属性是public static final 修饰?
    java方法的重载
    java的自增和自减
    html和jsp页面中把文本框禁用,只能读不能写的方法
    JavaScript的数据类型有哪些?
    thinkPHP 框架 delete方法无法删除数据 【已解决】
    Linux shell 数组
    redis cpu占用过高100%,清理病毒事件
    Linux 批量杀掉进程
    记一次宝塔Linux面板磁盘占满,删除文件后空间没有减少的问题
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124386.html
Copyright © 2011-2022 走看看