基于Android平台的“字元码”输入法研究与实现
2017-12-11刘正标
刘正标
摘要:该文根据笔者多年对汉字的字形结构以及笔画特点的研究比较和分析,提出了一种将汉字分解为字元,并将字元合理分布到手机的0-9数字键中,利用数字键进行中文输入的思路和方法;该输入法的实现非常适合于那些没有学过拼音、不了解阿拉伯字母的中老年人进行中文输入;同时该文的思路也可以应用在大部分具有数字键盘的设备的中文输入。
关键词:字元;中文输入法;数字小键盘;Android;输入法框架;字库
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)31-0057-02
1 背景
随着智能手机对人们生活的影响越来越大,利用智能手机进行中文输入交流已经成为了人们生活中不可缺少的内容,特别是目前微信和QQ等网络通讯软件已经代替了以前传统短信通讯。因此应用于手机上的中文输入法软件显得尤为重要,也产生了不少各种各样的手机中文输入法,比如基于笔画的笔画输入法,基于拼音的拼音输入法,还有基于各种方言的输入法也层出不穷。然而对于广大没学过拼音或者不了解阿拉伯字母的中老年人迫切需要一种能用于手机的简单易用的中文输入软件。因此,如何利用简单的0-9数字进行快速有效的汉字输入,也是笔者一直研究的课题。本文对汉字输入法的规则和手机数字键盘汉字输入的规律进行研究,提出了一种能应用在Android平台的基于数字编码的形码中文输入法以及在Android平台上的软件实现方法。
2 输入法开发环境及相关技术
Android 简介,Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android IMF,全称为Android Input Method Framework,中文解释为输入方法框架。是由google公司提供给用户的一种输入法编程接口,主要由input method manager、input method(IME)、client application三部分组成,分别用来管理各部分的交互、实现一个允许用户生成文本的独立交互模块、通过输入法管理器控制输入焦点和IME的状态等功能。
Android SDK,全称为Android Software Development Kit,中文解释为Android软件开发工具包。是Android平台专属软件开发工具包。
Eclipse,是开放源代码的、基于Java的一种可扩展开发平台。它提供了一个框架和一组服务,通过插件组件来构建需要的开发环境。通过安装不同的插件Eclipse能支持不同的编程语言,如Java、Python和C++等。Eclipse是目前程序员使用最广的集成开发工具。
3 字元输入法实现及关键技术
3.1 编码方式
笔者通过对各种汉字输入法和汉字结构的研究比较之后发现,在设计汉字的字元时,除了要考虑到汉字的部首,还要考虑到汉字的形,因此本输入法根据组成汉字的字元的记忆特点和使用频率,将字形和部首进行合理设计,称为“字元码”,然后将它们按使用频率分布到0-9这10个数字中。
3.2 输入法设计思路
字元码输入法设计的目的是充分利用数字简单的优点来提高输入速度,所以在设计输入法时笔者主要从如下几个方面进行考虑:
1) 能进行词组输入,设计规则为:如果是双字词取每个词的前两个字元编码;如果是三字词取前两个字的首字元编码以及第三个字的前两个字元的编码;四字词则直接从每个汉字中取一个编码;多字词以及整句设计为取前三个字的第首字编码和最后一个字的首字编码。
2) 能造词和整句输入,对于输入过程中经常使用的词或整句,提供造词功能,将用户造的词加入到用户词库中,以方便下次输入。
3) 能进行自动调频,根据用户的输入习惯对经常输入的重码字,按使用的频率自动调整到候选列表的前部。
4) 能进行词语联想,词语联想能大大提高手机输入速度,因为本软件也提供了词语联想功能。
5) 能进行简体和繁体字的输入切换。
3.3 代码设计与实现
1) 界面实现
输入法界面实现主要采用Android IMF编程,借鉴目前比较流行的手机输入法,界面风格保持简洁、清新、易用。输入法主界面如图1所示。
2) 字库的设计
Android平台集成了SQLite作为内置数据库,SQLite具有占用资源少的优势,因此本输入法的字库编码都采用码表的方式存入SQLite数据库中。字段结构如下表,其中keys字段存放的是字词编码,word字段存放的是对应的字词,_id字段存放的是调频用的优先级。
DROP TABLE "words";
CREATE TABLE "words" (
"keys" TEXT,
"word" TEXT,
"_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
);
3) 關键技术代码
词语联想功能是本输入法的一大亮点,用户输入词语后通过查询联想数据库,判断该词语有哪些后续的联想关联词语,读出这些词语按优先级显示在候选窗口,主要代码如下:
public void pickSuggestionManually(int index,CharSequence mSelectedString) {
if (mCompletionOn && mCompletions != null && index >= 0
&& index < mCompletions.length) {
CompletionInfo ci = mCompletions[index];
getCurrentInputConnection().commitCompletion(ci);
if (mCandidateView != null) {
mCandidateView.clear();
}
updateShiftKeyState(getCurrentInputEditorInfo());
}else if(mComposing.length()>0||(mWordTemp!=null&& mWordTemp.length() == 1) ) {
CharSequence mSelectedString_temp = null;
if(((mSelectedString.toString()).substring(0, 1).matches("[\u4e00-\u9fa5]+"))&& mSelectedString.length()>1){
mSelectedString_temp=mSelectedString.subSequence(1, mSelectedString.length());
}else{
mSelectedString_temp = mSelectedString;
}
getCurrentInputConnection().commitText(mSelectedString_temp, 1);
mWordTemp = mSelectedString.toString();
if(mWordTemp.length() == 1){
updateCandidates();
}else{
mCandidateView.clear();
mWordTemp = null;
}
}
4 結束语
本文从汉字的字形和结构出发,研究了一种基于阿拉数字0-9编码的简便输入法,并在流行的Android平台上将其实现。该输入法设计模块包括有简繁输入功能、词组输入功能、词语联想功能以及用户造词功能。整个输入设计简单实用,人机界面友好,字词库丰富。虽然说字元码输入法的在 Android 平台已经实现的大部分功能,但是由于本人时间和精力有限,本系统将来仍需要进行各方面的完善。
参考文献:
[1] 王岳. Android 平台中文输入法的设计和实现[D]. 苏州: 苏州大学, 2012.
[2] Android.维基百科, 自由的百科全书[EB/OL]. http://zh.wikipedia.org/wiki/Android.
[3] Android 系统的架构基础知识[EB/OL]. http://www.android-study.com/jichuzhishi/550.html.
[4] 陈友亮. 基于 Android 平台输入法设计和联想功能实现[D]. 汕头: 汕头大学: 2012.
[5] 陈钦梧. 新音形输入法的设计及其在 Android 平台上的实现[D]. 汕头: 汕头大学, 2012.
[6] 陈钦梧, 彭小忠. 新音形编码汉字输入法设计[J]. 计算机工程与应用, 2014, 50(1):36-40.