admin管理员组

文章数量:1532484

2024年6月4日发(作者:)

android输入法02:openwnn源码解析01—输入流程

之后要开始android日文输入法的测试,因此现在开始研究android输入法。之前两

篇文章已经对android自带的输入法实例softkeyboard的源码进行了解析。这一系

列将开始学openwnn的源码。

openwnn是一家日本公司开发的开源输入法框架,涉及中文、日文、韩文。目

前已经加入到了android源码之中。因此你打开一个模拟器时,会发现其中有一个

japanese ime的输入法,其服务名为openwnn,这个就是openwnn的日文输入法。

1、日文输入

本文章主要以日文输入法为主。为了方便大家阅读,先对日文输入法做一个简

单的介绍:

日文输入法分为罗马音输入法(类似中文拼音)和假名输入法(类似中文

五笔)。比如,你要输入”可愛“,则用罗马音输入,需要输入”kawai“,然后

在候选词中选择”可愛“;若使用假名输入,则需要输入”かわい“,在候选中

选择”可愛“。

日文由平假名、片假名(分全角片假名和半角片甲名)和汉字组成。通常学

日语的人会说到50音图,就是日语50个平假名(与之对应有50个片假名)

的读音。其中平假名是由汉字演化而来的,类似于日文的拼音,比如”可愛

“的日文读音就是”かわい“。片假名是由于外来语的入侵,原来平假名无法表

达所有的外文内容而设计的。

这里,如果你读到这个类时,其中会涉及到三个输入层:

第一层为原始输入,比如输入的按键;第二层为假名层;第三层为最终显示结果,

一般为汉字与假名的混合体。以前面那个例子,在罗马音输入法模式下,第一层

为”kawai“,第二层为”かわい“,第三层为”可愛“。若你不懂日文的一些基本特点,这

一个地方有可能看不懂。

2、输入流程

2.1 android输入法输入流程

现在我们开始介绍输入流程。从前面的文章对softkeyboard的分析(若你对输

入法不了解,请看前两篇介绍softkeyboard的文章,否则后面的内容很难看懂),

我们可以知道,输入法包括四个部分:Keyboard,KeyboardView,CandidateView,

InputMethodService。其中InputMethodService是前面三者的使用者,同时也设定

了输入流程。android输入法的调用流程如下:

输入法在Android中的本质就是一个Service,假设用户刚刚启动Android,用

户移动焦点首次进入文本编辑框时,Android便会通知Service开始进行初始化工作。

于是便有了如图中的一系列动作。

追根溯源,onCreate方法继承至Service类,其意义和其他Service的是一样

的。Sample在这里,做了一些非UI方面的初始化,即字符串变量词汇分隔符的初

始化。

接下来执行onInitializeInterface,这里是进行UI初始化的地方,创建以后和配置修

改以后,都会调用这个方法。Sample在这里对Keyboard进行了初始化,从XML

文件中读取软键盘信息,封装进Keyboard对象。

第三个执行的就是onStartInput方法,在这里,我们被绑定到了客户端,接收

所有关于编辑对象的详细信息。

第四个执行的方法是onCreateInputView,在用户输入的区域要显示时,这个

本文标签: 输入法输入日文流程源码