这里我来介绍一下怎么在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
=========================================================
分享到:
相关推荐
Android自定义控件---联系人列表A-Z排序 此demo的博客地址:http://blog.csdn.net/u012814441
Android自定义控件---“取消”视图 此Demo博客地址:http://blog.csdn.net/u012814441/article/details/51220396
在我们从Android小学生 进阶到 Android中学生的路上,肯定需要经历 自定义View。 大神已经给出了,最精简的Demo,我这里 顺水推舟,把一些基础知识 标记在代码之中,各位可以一边看源码 一边学基础。 觉得文章有用,...
Android 自定义view-仿新浪微博#话题#插入EditText 博客地址http://blog.csdn.net/u014702653/article/details/52799715
Android自定义控件---继承ProgressBar功能扩展 博客地址:http://blog.csdn.net/u012814441
Android自定义 View - 仿淘宝 淘抢购进度条
安卓自定义View---视频音量调控 资源为博客实例:http://blog.csdn.net/wangxiyue0311/article/details/77929846 有问题博客留言
Android自定义锁屏实现----仿正点闹钟滑屏解锁
原文地址http://blog.csdn.net/android_cmos/article/details/52356229
android 开发进阶 自定义控件-仿ios自动清除控件
《Android 群英传》读书笔记:自定义 View ---- 音频条形图 博客地址:http://blog.csdn.net/like_program/article/details/53352899
android 自定义控件----编辑框
Android自定义控件--下拉刷新的实现,直接在项目中可用,可访问博客:http://blog.csdn.net/qq_20889581/article/details/51008917 进行详细浏览,欢迎留下宝贵意见!
安卓Android源码——Android自定义锁屏实现----仿正点闹钟.zip
在Android系统上开发自定义的按键,按键名任意定义, 并且在framework层监听验证; 在开发总经常遇到客户需要定制化按键;本资源手把手教会您自定义按键并实现监听。
Android高级应用源码-android自定义控件-侧滑菜单.zip
Android自定义桌面-选择要显示的应用
android自定义日历-实现签到订约功能 基于IDEA的工程源码
项目中用到的一个签到日历自定义控件,基于网络源码的部分修改而成,满足自己项目的需求了。