`
ai_longyu
  • 浏览: 482338 次
社区版块
存档分类
最新评论

Android中添加自定义按键 ---- 非标准做法

 
阅读更多

这里我来介绍一下怎么在Android中添加自定义按键,首先要打通kernel中的驱动,然后是Android层,我这里介绍一种不是很标准的方法,项目需要。

首先是Linux中,我这里只是把已有的search 按钮替换成我们的用户按钮,并提供长按和短按功能。

修改板级文件,我这边使用的事Freescale imx53的开发板

kernel/arch/arm/mach-mx5/mx53_smd.c

定义按键与哪个GPIO连接


然后定义这个按键的信息


这里我把键值定义为KEY_F1

然后我们在按键驱动中添加新的按键和功能,

/kernel/drivers/input/keyboard/gpio_keys.c



首先在按键中断到来的时候我们要判断出是我们定义的user button,当按下的时候产生一个下降沿中断,按下的时候state应该为1,先记录按下时的时间,然后开启一个线程,看下线程中做了什么


在线程中我们不断判断state的值,如果一直按下,就判断按下了多久,当达到我们定义的长按时间的话,就会像上层发送一个长按的uevent事件,否则返回。

在按键抬起的时候也会产生中断,这样的话在else语句中会做判断,然后向user space发送一个uevent事件。

-------------------------------------------------

接下来我们看下在android中我们如何捕获

我们使用ueventObserver的方式去捕获uevent事件,详细的不多说了,可以参考我之前的博文有介绍uevent在android中的用法,直接贴代码,本人对java不是很熟悉,简单的代码就不来卖弄了,呵呵。

我们把代码加载ActivityManagerService.java中


当bootFinish的时候我们就开始侦测这2个uevent时候被发生,然后用toast来显示。

最后重新编译,烧到我们的开发板中,当短按的时候会有信息吐出来,长按超过1.5s也会有信息吐出来。


分享工作经验,结束。

=========================================================

mail & MSN :zhangjie201412@live.com

=========================================================




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics