android 数组追加,android 中如何添加新的键值

key 59    OFFHOOK

key 60    ONHOOK

key 61    HANDFREE

key 62    PSTNCALLIN

注意:新加的键值不要与已有的重复。

2.    kernel_imx/drivers/input/keyboard/imx51-key.c

在键盘驱动中定义相应的键盘扫描码

static unsigned short imx51_keypad_keycode[IMX51_KEY_NUM] =

{

/*F1*/   1, /*PSTN*/     43, /*转移*/    8, /*1*/  9, /*6 */ 50, /***/     14, /*音量》*/ 56,

/*F2*/   2, /*留言模式*/ 44, /*画中画*/ 45, /*2*/ 10, /*7 */ 51, /*# */    16, /*方向上*/ 17,

/*F3*/   3, /*画面切换*/  5, /*隐私*/   46, /*3*/ 11, /*8 */ 52, /* 重播*/  53, /*方向下*/ 18,

/*F4*/   4, /*注销*/      6, /*静音*/   47, /*4*/ 12, /*9 */ 13, /* 免提*/  54, /*方向左*/ 19,

/*F5*/  41, /*保持*/      7, /*闪断*/   48, /*5*/ 49, /*0 */ 15, /* 音量《*/55, /*方向右*/ 20,

/*取消*/57, /*菜单*/     58,

/* offhook */  59,  /* onhook */ 60,  /*  免提 */61,  /* 来电 */62

};

3.     在frameworks/base/include/ui/KeycodeLabels.h

1)在数组keycodes 中添加 新定义的信息,

要在{NULL, 0}之前添加

static const KeycodeLabel KEYCODES[] = {

...

...

{ "OFFHOOK", 92 },

{ "ONHOOK", 93 },

{ "HANDFREE", 94 },

{ "PSTNCALLIN",95 },

// NOTE: If you add a new keycode here you must also add it to:

//   (enum KeyCode, in this file)

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

//   tools/puppet_master/PuppetMaster.nav_keys.py

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

{ NULL, 0 }

}

2)枚举类型 KeyCode 中添加

typedef enum KeyCode {

...

...

kKeyCodeOFFHOOK = 92,

kKeyCodeONHOOK = 93,

kKeyCodeHANDFREE = 94,

kKeyCodePstnCallIn = 95

}KeyCode;

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

添加如下

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

public static final int KEYCODE_OFFHOOK         = 92;

public static final int KEYCODE_ONHOOK          = 93;

public static final int KEYCODE_HANDFREE        = 94;

public static final int KEYCODE_PSTNCALLIN      = 95;

注意:       private static final int LAST_KEYCODE    = KEYCODE_MUTE;

应改为:    private static final int LAST_KEYCODE           = KEYCODE_PSTNCALLIN;

在函数 public final boolean isSystem() 中,同样需要添加:

case KEYCODE_OFFHOOK:

case KEYCODE_ONHOOK:

case KEYCODE_HANDFREE:

case KEYCODE_PSTNCALLIN:

通过以上的更改,新的键值就添加上去了,由于更改了 KeyEvent,影响到了API,

所以需要make update-api

如果对新键值进行处理,可以通过获取相应的keycode,对它进行处理;

对于按键事件的处理一般如下文件中

6.   frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java

综上可知,我们可以根据需求定义自己的键值,并对键值所对应的事 件信息进行合理化处理。

注:

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

这个很重要。也就是说需要实现明白添加的键值是否是mxckpd.kl的input event

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值