美文网首页
Android系统输入事件Read过程

Android系统输入事件Read过程

作者: 我叫王菜鸟 | 来源:发表于2017-12-18 21:31 被阅读0次

    输入事件主要业务逻辑在native层,这一层主要是NativeInputManager进行管理,这也是入口。

    NativeInputManager
    - mInputManager:sp<InputManager>
    

    主要管理的是InputManager对象,它的职能是创建一些核心对象。

    InputDispatcher
    InputDispatcherThread
    InputReader
    InputReaderThread
    

    其中InputDispatcherThread与InputReaderThread只是两个循环,主要的逻辑靠InputDispatcher与InputReader实现。

    其中InputReader主要是进行读取事件

    mEventHub:EventHub
    mDevices:InputDecvice
    

    在InputReader中EventHub用于管理设备,mDevices对应的是EventHub的设备,这样做的目的是分层,在InputReader这一层主要是进行对设备添加删除和上报过来的事件对应进行处理,所以核心并不是关心这个设备和驱动进行打交道的过程,比如对应那些kcl等。

    EventHub主要和Devices打交道,它里面保存着真正的Devices节点。

    Devices
    fd
    KeyMap
    

    其中fd主要是读取设备节点的文件句柄,KeyMap对应的是kcl与kcm的映射关系,这些主要是对底层上报上来的事件进行映射转化成Android的code。

    对于kcl与kml对应的是两张表,Android从驱动传递的code值是需要转化成Android系统识别的,为什么要这样做呢?假如我们需要更新设备,我们按键部署不一致,我们只需要更新这个表即可,这样就做到了解耦目的。

    相关文章

      网友评论

          本文标题:Android系统输入事件Read过程

          本文链接:https://www.haomeiwen.com/subject/aqcvwxtx.html