Android系统--输入系统(五)输入系统框架
Android系统--输入系统(五)输入系统框架
1. Android设备使用场景:
假设一个Android平板,APP功能、系统功能(开机关机、调节音量)、外接设备功能(键盘、触摸屏、USB外接键盘/鼠标)。
2. 引入输入系统:
(1)触摸屏控制APP (2)外接设备控制系统功能
3. 输入系统三部分
读取事件
分发事件
处理事件
4. 读取事件分析
4.1 读取支持功能
支持多设备
GPIO键盘
遥控器
外接USB键盘鼠标
触摸屏
即插即用:可以随时接入或者拨出
支持多语言(映射):同一个同一按键,可能得出不同结果(针对不同国家)
4.2 读取实现
Linux驱动
GPIO键盘,生成设备节点(/dev/input/event0)
遥控器,生成设备节点(/dev/input/event1)
应用处理
open/read 设备节点 /dev/input/event
检测有无数据
检测设备的拔插
处理(映射)
5. 分发事件分析
5.1 分发支持功能
分辨事件
按键(SystemKey:音量键、电源键;GlobaKey:特殊键;UserKey:发给APP)
触摸屏(virtualKey、手势->转化)
发送事件
找出当前APP
发送给APP(源代码分析)
6. 处理事件分析
6.1 处理事件流程分析
点击:执行某些函数
输入框
启动输入框
显示文字
7. 输入系统代码框架
7.1 输入系统代码框架图

7.2 输入系统框架说明
核心:进程间通信(socketpair机制)
Reader线程不断循环从设备节点读取数据
映射
发送给InputDispatcher线程
通过windowManagerService确定输入事件
将确定的输入事件需要发送APP
APP响应
Android系统--输入系统(五)输入系统框架的更多相关文章
- Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 & ...
- Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值
Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值 题外话:一个问题研究到最后,那边记录文档的前半部分基本上都是没用的,甚至是错误的. 重点在最后,前边不过一些假想猜測. ht ...
- Android应用程序框架层和系统运行库层日志系统源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少 ...
- Sql Server函数全解<五>之系统函数
原文:Sql Server函数全解<五>之系统函数 系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些 ...
- Android : 反射机制获取或设置系统属性(SystemProperties)【转】
本文转载自:https://blog.csdn.net/wei_lei/article/details/70312512 Android.os.SystemProperties 提供了获取和设置系统属 ...
- Android震动vibrator(马达)--系统到驱动的流程【转】
本文转载自:https://blog.csdn.net/tianshiyalin/article/details/17136723 一.前言 本人刚学习安卓驱动开发,水平不能说菜,是根本没有水平,在这 ...
- 我是如何一步步编码完成万仓网ERP系统的(二)前端框架
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- 我是如何一步步编码完成万仓网ERP系统的(五)产品库设计 1.产品类别
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- android 程序防止被360或者系统给kill掉
关于如果和防止android 程序防止被360kill掉之后重启的问题,肯定大家也搜索了好多方法,都不好使,对不对,什么增高权限了,什么进程优先级了,这些东西都不是我们可控的,所以有没有一些非常保险的 ...
- Android 通过应用程序来设置系统的日期和时间中的
Android 通过应用程序来设置系统的日期和时间中的 android 2.3 android 4.0 测试可行,刚需ROOT权限. import java.io.DataOutputStream; ...
随机推荐
- AlloyTouch之无限循环select插件
写在前面 当滚动的内容很多,比如闹钟里设置秒,一共有60项.让使用者从59ms滚回01ms是一件很痛苦的事情,所以: 在列表项太多的情况下,我们希望能够有个无限循环的滚动.00ms和01ms是无缝链接 ...
- 纯CSS3之五子棋(黑白棋)画法
无聊想用JS写个五子棋玩玩,这边先用CSS3画出了五子棋,感觉挺惊艳的.发上来看看 PS:第一次发博文T-T 此为个人原创. 不多说上图: 代码如下: <!DOCTYPE html> & ...
- QMediaPlayer占用CPU过高问题
根据搜索引擎的结果,要想实现QT下播放多媒体,一般有两种方案:一种是使用第三方插件,好像叫Phonon:一种是使用QT自带的QMediaplayer. 两种方法各有利弊.使用第三方插件,则方便易用,封 ...
- TCP和UDP 的区别和适用场合
TCP和UDP式TCP/IP中能够实现传输层功能的.具有代表性的协议,其主要特点和区别如下: TCP: 面向连接的.可靠的流协议.为提供可靠性传输,TCP实行"顺序控制"或&quo ...
- 1821: [JSOI2010]Group 部落划分 Group
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1308 Solved: 627[Su ...
- 模态Model视图Push下一个视图(混合跳转)
来自: http://www.cnblogs.com/dingding3w/p/6222626.html 如果没有UINavigationController导航栏页面之间切换是不能实现Push操作的 ...
- Android 启动模式--任务(Task)--桟 的误区
Android 启动模式--任务(Task)--桟 的误区 写这篇文章是因为前几天的一次面试,面试官说SingleInstance模式会新建一个桟,而SingleTask不会.首先不说这个对不对(非要 ...
- IO 模型
常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求soc ...
- wx模块小实例
功能介绍: 查询数据库表数据,提取数据并显示 main.py(执行文件) #coding:gbk __author__ = 'Hito' import querySmscode import wx c ...
- RxJava 笔记
前言 目前 RxJava 是安卓开发圈内最流行的库之一,本来准备研究研究,但看了扔物线写的<给 Android 开发者的 RxJava 详解>后,觉得生无可恋,哦不,是觉得已经写无可写. ...