前段时间正好学习InputManagerService,自己也做了些笔记。由于在网上找到更详细的资料,故在这就不贴自己的笔记,分享个链接,有兴趣的就看看吧
http://www.feeyan.cn/?p=280 Android按键事件传递流程
以下内容是资料的大体组成介绍。
做Android开发的少不了对触摸、按键事件进行处理,对于手机来说,主要是手势移动、触摸按下等,而TV主要通过遥控器、按键操作,按键事件不同于触摸事件,必须先获得焦点,然后才能移动、选择。 Android输入设备支持鼠标、键盘(按键)、触摸屏(单点、多点)、轨迹球等,这些设备所产生的输入事件Input Event从底层驱动开始经过input子系统核心层到达Event Handler事件层,最终把事件copy_to_user到用户空间,然后由用户空间层获取这些事件进行分发、传递。整个过程涉及到内核层、Framework层以及应用层,内核层传递过程不在本文研究范围内,本文主要对按键事件在Framework层、应用层的传递过程进行分析(本文基于Android5.1.1版本),带着问题出发: 1. Framework层如何获得输入事件 2. Framework层获得按键事件后如何处理、存储 3. Framework层如何分发、传递给应用层 4. Framework层服务端管道和应用程序客户端管道如何创建、注册 5. 应用层如何从Framework层接收按键事件 6. 应用层接收到按键事件后如何传递 7. 特殊按键如何处理 8. 总结
|