IInputMethod idl 接口。客户端可以使用该接口的相关功能。
IInputMethodWrapper.java 实现了 IInputMethod idl 接口。这个类收到客户端的跨进程命
令后,调用 InputMethod 完成相应功能。
IInputMethodSessionWrapper.java 实现了 IInputMethodSession idl 接口。这个类收到客
户端的跨进程命令后,调用 InputMethodSession 完成相应功能。
6. frameworks/base/core/res/res/layout
这个目录下存放着一些系统资源。其中,
input_method.xml 描述了一个输入法的窗口(即 SoftInputWindow)布局,从上往下,依次
排列 extractArea, candidatesArea 和 inputArea。
input_method_extract_view.xml。
7. development/samples/SoftKeyboard
这个目录下代码实现了一个的输入法实例--软键盘英文/数字输入法。这里面实现的类
大都是从 frameworks/base/core/java/android/inputmethodservice 中的类派生而来。
AndroidManifest.xml:描述这个.apk 提供的 service 以及关于这个输入法的一些信息。
res/xml/目录下存储着几个描述不同虚拟键盘的 xml 文件。
LatinKeyboard.java 中的 LatinKeyboard 类是 Keyboard 的子类。
LatinKeyboardView.java 中的 LatinKeyboardView 类是 KeyboardView 的子类。
8. frameworks/base/core/java/android/widget
在这里 TextView.java 是使用 Input Method Framework (IMF)的客户端。TextView 创建了
一个 InputMethodManager 的实例并调用其 restartInput 函数。
InputMethodManager::restartInput 函数创建了一个 InputConnection 实例并调用
IInputMethodManager::startInput。
IInputMethodManager::startInput 函数使用 mContext.bindService 启动一个 InputMethod
service, 如 Sample Soft Keyboard。
9. frameworks/base/core/java/com/android/internal/widget
学习目标:
实现新的输入法
学习目的:
掌握 输入法框架
学习收获: