此文为本人学习输入法之后所做的一个总结报告。与大家分享。
安卓输入法框架(Input Method Framework)IMF
一.输入法框架简介
自Android平台1.5版本以后,Google开放了 Android平台输入法框架(InputMethod Framework, IMF) , IMF是Android平台的特色设计。它的出现大大推动了不带实体键盘的设备的诞生。同时,Android平台输入法框架也给出了输入法的开发所需要的接口,为Android平台的输入法提供了可扩展性。
二.输入法框架组成
一个IMF结构中包含三个主要的部分:
●(输入法服务)input method manager(IMM):管理各部分的交互,是一个客户端API,存在于各个应用程序的context中,用来沟通管理所有进程间交互的全局系统服务,可以通过Context.getSystemService()来获取一个InputMethodManager的实例。
●(输入法应用)input method(IME):实现一个允许用户生成文本的独立交互模块。系统绑定一个当前的输入法。使其创建和生成,决定输入法何时隐藏或者显示它的UI。同一时间只能有一个IME运行。
●(客户端)client application:通过输入法管理器控制输入焦点和IME的状态。一次只能有一个客户端使用IME。
输入法整体框架如图1所示:
图1.输入法的总体框架
2.1 IMM的实现
InputMethodManagerService.java是整个系统当中,一切与输入法有关的地方的总控制中心。它通过管理下面三个模块来实现系统的输入法框架。
(1)WindowManagerService
负责显示输入法,接收用户事件。
(2)InputMethodService
输入法内部逻辑,键盘布局,选词等,最终把选出的字符通过 commitText提交出来。
(3)InputManager
由 UI 控件(View,TextView,EditText等)调用,用来操作输入法。比如,打开,关闭,切换输入法等。
2.2 输入法应用组成