在上一篇中,我们简单介绍了 Android 输入子系统以及 EventHub 如何监听和管理来自各种输入设备的事件。本篇我们将深入探讨 InputReader 组件,了解它如何从 EventHub 获取原始输入事件,并将这些事件解析为更高层次的输入事件(如按键、触摸等),以便 Android 系统进一步处理。
一、InputReader初始化
InputReader 的主要职责就是从 EventHub 中读取原始的输入事件(RawEvent),并将其转换为标准的 InputEvent 对象(例如 KeyEvent 和 MotionEvent)。之后,这些标准化的事件会被传递给 InputDispatcher 进行分发,最终到达相应的应用程序进行处理。
从前面初始化的介绍中,我们知道 InputReader 是在 InputManager 构造方法中被被初始化的。
1、InputManager
源码位置:/frameworks/native/services/inputflinger/InputManager.cpp
InputManager::InputManager(const sp<InputReaderPolicyInterface>& readerPolicy,
const sp&l