第六章:输入系统(3)-框架

接下来的几个小节我们会深入分析输入子系统,首先先来了解一下输入子系统的框架。

假设有一款andriod平板,上面安装了很多应用程序,以及系统功能(关机,开机,增加减少音量),同时存在很多输入设备如按键,触摸屏,外接usb键盘鼠标等。那么出现了一个问题,我们的输入事件应该对那个应用程序,或者我们的输入事件应该是和那个应用程序进行通信,如:我们按下按键之后是启动输入法呢?还是减少音量呢?如下图:
在这里插入图片描述
当按下按键是需要减少音量,那么这个消息应该是发送给系统消息,如果是启动微信,那么这个这个消息应该是发送给应用程序,所以我们可以分成三个部分:读取,分发,处理。
1.读取:支持多设备输入(如GPIO键盘,或者遥控器,触摸屏等),即插即用,支持多语言(映射:同一按键可以获取不同国家的字符,如按下1键可以是美国的a,也可以是法国的字母)
主要包含:linux驱动与应用处理
2.分发:分辨消息,是发送给谁,比如按键,按键有很多种,如系统按键控制音量,电源等。还有globalkey(特殊按键),Userkey(发送给APP),记忆触摸屏等等,这些都需要分辨,分辨之后在进行发送,发送之前先找要找到目标APP。
3.处理:APP接收到后,进行相应的处理。如启动输入法,或者某些函数。
大致框架如下
在这里插入图片描述
按照之前的3和部分进行划分:
在这里插入图片描述
在分发的时候,对象太多了,所以需要WMS(window Manage Service)来进行协助,在读取部分是一个Reader线程循环,如果读取到了数据就发送给Dispacher线程,然后该线程确定发送给谁之后,在发送给进程APP。其中Reader线程与Dispacher线程属于systemServer进程。

具体细节我们后续再进行分析,该小节主要讲解一下在andriod中输入子系统的框架。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值