IMF的本质
包含了虚拟键盘的系统级窗口,能处理虚拟按键的点击事件,当然也能把字符传递到编辑框中
IMF的核心思想
- 采用Service运行具体的输入法
- 在Service中创建窗口,把输入的内容传递到编辑框中
常见的缩写
IMF:输入法框架
IM:输入法
IMS:输入法服务
IMM:输入法管理器
IMMS:输入法管理器服务
IME:具体的输入法,包括IMS和各种Bind
IMF框架的四个Binder
IMM:
Binder,编辑框对应的Binder,IME通过该Binder将虚拟按键消息传递给编辑框;
IMM对应的Binder,方便IMMS访问客户进程,IMMS需要将IME的Binder传递给客户进程,此后客户进程可直接访问IME;
IME:
IMS对应的Binder,IMMS通过它控制输入法的状态;
专属Binder,客户端调用,将按键消息传递给IME;
按键和触摸消息都要将消息转换为虚拟按键消息–>IMM,编辑框对应的Binder–>编辑框;
不同的是按键消息之间传递到客户端中,然后由客户端先调用IME中的专属Binder,将按键消息装换为虚拟按键消息;触屏消息会直接转换为虚拟按键消息。
Binder对应的实现类
InputConnection,接口,定义了编辑框应该提供的函数接口;
InputMethodClien