您当前的位置: 首页 > 
  • 2浏览

    0关注

    417博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

江南才尽,年少无知! 发布时间:2019-02-20 17:18:05 ,浏览量:2

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

假设有一款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中输入子系统的框架。

关注
打赏
1592542134
查看更多评论
立即登录/注册

微信扫码登录

0.0373s