目录
- InputManagerService是Android framework中核心service之一,Android framework层涉及的代码也是非常多
- IMS(InputManagerService)管理android系统中的所有输入,包括常见的触摸屏和键盘,还包括各种传感器的输入。
- IMS和其他的系统服务一样,都是在SystemServer中创建的
frameworks/native/services/inputflinger/
- InputDispatcher.cpp
- InputReader.cpp
- InputManager.cpp
- EventHub.cpp
- InputListener.cpp
frameworks/native/libs/input/
- InputTransport.cpp
- Input.cpp
- InputDevice.cpp
- Keyboard.cpp
- KeyCharacterMap.cpp
- IInputFlinger.cpp
frameworks/base/services/core/
- java/com/android/server/input/InputManagerService.java
- jni/com_android_server_input_InputManagerService.cpp
从简单的分类可以看做是两层:
- Java层,InputManagerService负责对外提供服务,给WindowManagerService提供输入信息的回调
- Native层,监控Linux上报的输入事件,把事件处理成Android的KeyCode,给想要处理的Window发送输入事件
前面介绍了Linux的输入子系统,可以看到应用层的输入子系统框架都是基于驱动抽象出来的文件系统设备节点的读写来处理的,虽然说起来比较简单,但是在整个复杂的Android操作系统