和你一起终身学习,这里是程序员Android
本篇文章主要介绍开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、驱动通过GPIO连接的按键
二、Framework 层添加按键响应方法
一、驱动通过GPIO连接的按键
此类按键采用GPIO来连接,通过监测其中断来判断按键的动作,需要根据具体硬件设计在项目对应的dts文件配置gpio_keys节点。
底层驱动主要修改以下两个文件上报键值。
1.修改 sp9863a-3c10.dts
修改方法如下:
2. 修改pinmap-sp9863a.c文件
修改方法如下:
二、Framework 层添加按键响应方法
通过查看驱动调节的按键值是否上传ok。
命令查看方法如下:
其中:
: 是十六进制数,对应十进制数为352.
,: 是指按下和弹起的动作。
1.在 gpio-keys.kl 文件中添加自定义key值
在kl文件中我们可以仿照power键添加key 值。
这样就可以完成物理按键 kl 文件到 KEY_OK的映射。
这个kl 文件是通过中编译到系统中,在手机/system/usr/keylayout目录下可以找到。
不同平台代码可能存在差异。
的部分代码如下:
2. 在Generic.kl 文件中添加key 值
修改方法如下:
3.在 qwerty.kl文件中添加key值
修改方法如下:
4.在Native 层添加keycode 值与标签
注意下面的289 keycode 值,是延续上面288 keycode 的值,跟驱动上报的352不一样,那是底层的数值,上层最好跟底层差分。
修改方法如下:
同样我们仿照288的定义,在InputEventLabels.h 添加标签定义
5. 在attrs.xml 中添加属性值
修改方法如下:
6.在KeyEvent 中添加key 值方便PhoneWindowMangager中调用
修改方法如下:
7. 最后我们在PhoneWindowManager 中处理按键行为
调通之后,我们就可以在PWM 的方法处理我们想做的事情,比如 吊起Google Assist等。
领取专属 10元无门槛券
私享最新 技术干货