文档介绍:解读android键盘一:android输入法框架
Android的输入法框架比价复杂。从进程的角度来讲,相关功能主要分布在下面三个位置:
客户端应用是一个包含有图形界面的应用,如地址本。图形界面上包含有能够接收输入的编辑框,如TextView。
输入法模块提供软键盘,将用户在软键盘上的按键输入根据某种算法(如Zi, T9, 国笔等)转换成单词,然后传递给客户端应用。目录development/samples/SoftKeyboard下提供了一个输入法模块实例。如果想要实现一个中文输入法,可参考这个实例。
平台部分实现一些管理功能,负责装载某个输入法模块,启动,终止该模块等。
相关代码主要位于下面几个位置。其中,位于3,5,6,7目录下的代码最值得关注。
1. frameworks/base/core/java/com/android/internal/view
这个目录下定义了几个重要的idl 接口。
定义了IInputMethod idl 接口,用于客户端跨进程操作InputMethod接口。
定义了IInputMethodSession接口,是IInputMethod的辅助接口。用于客户端跨进程操作InputMethodSession接口。
接口,由客户端实现。
定义了Input Method Manager的service接口。客户端通过InputMethodManager interface调用这个service。
,标识一个Input Method Manager 的客户。这个service在客户端实现,提供给server端调用。
,由客户端提供InputMethod使用。InputMethod可以与客户端交互,调用客户端提供的callback。
实现了IInputContext接口。
,,从客户端返回信息给InputMethod。
。
2. frameworks/base/services/java/com/android/server
3. frameworks/base/core/java/android/view/inputmeth