android系统添加新键值流程

1. 前言

android系统有时候会有添加新键值的需求,底层方面和上层方面可能会由于发行平台,芯片厂商和系统版本的原因会存在一定差异,但原理基本相同,个人理解就是收到原始信号之后,底层键值与上层键值进行一一映射,然后在上层处理相应键值。下面就举例一个新键值,首页键添加过程中所要修改的点。

2. 驱动层

驱动层键值信号传递跟芯片厂商有关,就以hisi芯片Android4.4版本为例:
驱动层收到原始信号之后进行映射:
key.xml

<other>
    <key value="0x34cbff33" name="KEY_HOME"       />
</other>

value的值为收到的原始信号值,键值信号会通过name变量值映射往上层抛
linux_key.h

{"KEY_HOME",		102       }

3. native层

kl文件对应驱动的键值

key 102   HOME

再往上:
./framworks/native/include/input/KeycodeLabels.h

static const KeycodeLabel KEYCODES[] = {
	......
    { "HOME", 3 },
	......
};

./framwork/native/include/android/keycodes.h

enum {
	......
   AKEYCODE_HOME    = 3,
	......
};

4. java层

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

public static final int KEYCODE_HOME            = 3;
names.append(KEYCODE_HOME, "KEYCODE_HOME");

5. 添加到资源文件

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

<enum name="KEYCODE_HOME" value="3" />

6. 消费键值

./framworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) {
		......
		switch (keyCode) {
			   case KeyEvent.KEYCODE_HOME:
                
                     return result;
         }
                
	
		......
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值