




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
移动终端汉语拼音输入法及本地搜索接口实现技术移动终端汉语拼音输入法及本地搜索接口实现技术 论文论文 移动终端汉语拼音输入法及本地搜索接口实现技术 摘 要随着信息时代的加速发展 手机已经成为今后人们移动通信的重要工具 中文电 话簿 中文短消息 中文记事本 手机聊天等众多功能的实现 人们对手机中文输 入法不同实现的要求越来越高 一种既能快速输入又易学易用的手机汉字输入 法对于上述应用在中国推广是非常重要的 本文针对这种需求 阐述了当前手机 输入法的发展和现状 介绍了各种输入法的特点以及相应的软硬件环境 对手机汉 字输入法所涉及的技术进行了研究 实现了一个具体的手机输入法 并在Windows 系统下进行了手机输入法的模拟测试 本文介绍了汉字的数字键盘输入系统的 功能以及总体设计本文源自六维论文网思想 并讨论了其中所涉及到的具体技术 以及实现的问题 然后重点研究和实现了汉语拼音数字键盘输入法 字母ABC输 入法 数字123输入法 本文运用J2ME技术 以Eclipse作为开发工具 Wireless Toolkit作为测试模拟器 并且移植到手机上通过测试 关键词 J2ME 输入法 Eclipse ABSTRACT With the fast development of information ages the mobile telephone has become the important tools of the correspondence in everyday life Chinese telephone directory Chinese short message and Chinese note book appearing people make the realization of Chinese input for mobiles phone A kind of quick and easy learning input method is of the importance for the method in the current mobile telephone and introduces the various input method as well as corresponded soft and hardware environment This thesis firstly introduces the function of the numerical keyboard of the Chinese characters and total design thought then talks about the important problem mentioned It studies and carries out Bopomofo input method letter of alphabet ABC input method as well as numeral 123 input methods The thesis uses the technology of J2ME and select Eclipse as the development kit Wireless Toolkit as a test simulator And the input method has already transplanted to mobile telephone testing Key words J2me Chinese input Eclipse 目 录 第一章 引言 1 1 1 输入法开发的背景介绍 1 1 1 1 课题背景 1 1 2 1 输入法发展历史及现状 1 1 2 手机操作系统的介绍 3 1 2 1 Symbian开放式操作系统 3 1 3 Series60简介 4 1 4 文章组织结构 4 第二章 J2ME与Eclipse简介 5 2 1 J2ME简介 5 2 2 MIDP应用程序体系结构 6 2 3 J2ME与S60的结合 7 2 3 1 J2ME的优势 7 2 3 2 J2ME与输入法的游戏开发 7 2 3 3 J2ME配置 7 2 4 eclipse简介 8 2 5 本章小结 9 第三章 智能终端输入法的总体设计 10 3 1 概述 10 3 4 智能终端汉语拼音输入法系统的框架设计 12 3 5 输入法的流程设计 12 3 6 主要模块的概要设计 15 3 6 1 输入法控制模块与文字库模块的概要设计 15 3 6 2 输入法客户端概要设计 17 3 5 本章小结 19 第四章 输入法的详细设计与实现 20 4 1 输入法的文字库处理模块的设计 20 4 2 输入法输入模块的设计 25 4 3 主控制模块 28 4 4 本章小结 29 第五章 输入法的测试与移植 30 5 1 模拟器测试 30 5 2 移植和真机的测试 32 5 3 本章小结 33 结束语 34 致 谢 35 参考文献 1361 移动终端汉语拼音输入法及本地搜索接口实现技术 第一章 引言 1 1 输入法开发的背景介绍 1 1 1 课题背景 中国已经成为拥有世界上最大的手机市场 在手机用户数得到快速增长的同时 而手机终端的功能也从最早的单一语音通话 逐步发展到手机短信 订阅资讯 手机上网 玩手机游戏 下载各种软件等各种多样化的服务 与移动业务的飞速 发展相比 手机输入法的研究进程则略显缓慢 目前手机上使用数字键盘的传统 中文输入法如 及字能输入法等 还都是以单字的方式进行输入 这极大地限制 了中文输入的速度 因此 研究针对手机的智能中文输入也显得越来越有实际意 义 目前 市场上己经出现了一些针对智能手机开发的第三方汉字输入法 这类 输入法在手机中实现了词语输入甚至语句级的中文输入 并提供了简单的自学 习功能 大大加快了手机输入速度 但在策略上 这类输入法还是根据候选字词 的一元频率来调整字词的出现顺序 而目前在桌面中已经广泛使用的智能中文 输入技术 由于其大量的数据需求 还未能在手机中得到有效应用 为了充分挖 掘智能手机的强大处理功能 有必要开发基于手机平台的智能中文输入法 1 2 1 输入法发展历史及现状本文源自六维论文网 计算机中文输入法随着计算机硬件的发展而不断更新换代 曾出现 万码奔腾 的 局面 一般把中文输入法的发展分为四代 第一代 字输入 自从intel286 电脑在我国企业单位普及开始 汉字的输入问题就成了一个难题 当时人们认为 计算机的输入是比较高深的一门学问 用最笨拙的电报码 拼音进行逐字的输入 是一件很费时间的事情 输入速度比手写慢的多 除非是严肃的文件才使用计 算机的铅字形式 1976 年 台湾人朱邦复创制一种称为 形意检字法 的中文输入法 用以解决电脑处理汉字的问题 包括输入输出 197 8 年 该输入法被蒋纬国重新定名为 仓颉输入法 仓颉输入法是一种字形输入法 根据 由上而下 由左而右 由外而内 等原则分拆字型结构 再以字码拼出 19 78 1983 年 王永民经过五年的研究发明了 五笔字型 简称王码 综合多学科研究成果的基础上提出 形码设计三原理 和 汉字字根周期表 发明了 25 键 4 码高效汉字输入法和字词兼容技术 获美 英 中三国专利 该输入法在当时是 一种最好的并且最有效果的输入方式 甚至人们认为是计算机汉语输入的顶峰 但是这个输入法有个缺点 就是要记忆 要培训 不经过长时间的练习是不能高 效输入的 一般人很难掌握 这就给很多非专业打字人员带来了很大的不便 为 了更多的人能输入汉字 因此拼音输入法被发明了 汉语是一种语言 既然是一 种语言就有一定的发音规律 有一定的音素 任何人在讲话的时候总是直接发音 的 没有先考虑如何写 这一点任何语言都是一样的 因此 拼音输入法有他先 天的优势 简单易学 很快普及开来 但拼音输入法重码率太高 输入速度较慢 因此又产生了一种音形码 该类编码兼顾音码和形码各自的特点 但既需要知道 发音 又需要分解形 使用不便捷 没大范围推广 第二代 词输入 二十世纪九十年代初 人们就开始研究词输入 1997 年 国家语委会主任许嘉璐曾指出 目前 中文信息处理虽然已实现了 字处理 但这只是信息处理的初级阶段 要实现计算机中文信息的高速处理 就必须超 越 字处理 阶段 汉字输入法正式转入以词为主的时代 1998 年 2 月王永民发明了 98 规范王码 可以输入词 成语和常见术语 是字形词输入里最好的输入法 拼音 的词输入发展也很快 出现了很多词输入的输入法 而且有些输入法还增加联想 功能 极大的提高了输入效率 第三代 句输入 语句级汉字输入技术是以短语或句子为基本输入单位 它具有 如下优点 采用自然的拼音输入方式 简单易学 采用拼音流自动切分技术 可以 连续输入拼音流 无需用户人工分词 根据上下文信息对候选同音字词自动消歧 处理 无需用户频繁干预 从理论上讲 语句级汉字输入法有两点明显优于字词 级汉字输入法 从操作心理学上看 用户倾向于按有一定意义的短语或句子为单 位进行短时记忆 持续输入 从信息论角度特征以及重码率的高低 不需用户分 词 用户可以把主要精力放在输入内容上 脑力劳动强度远比字词级输入法低 依靠人工智能 语句输入法虽然可以基于上下文进行重码选择 但音字转换的准 确率不高 句内修改频繁 导致输入速度不理想 而且短的拼音输入重码率还是 比较高 只有过长的拼音输入才能取得好的重码选择效果 但长的拼音输入出错 的几率更大 一旦输错就要回退修订 极大的降低了输入效率 它的自学习能力 也只能根据输入的一个拼音串检索曾经利用该拼音串输入过句子 而不能从正 在输入的语句中学习 使语句的学习受到很大的限制 另外 语句输入法需要较 高配置的计算机或比较高端的嵌入式设备 像智能狂拼输入法语料库就达 100 多兆 人工智能的发展现状决定了语句级汉字输入技术近几年不会有大的突破 第四代 语音输入和手写输入 输入方法向非键盘输入方向发展 将追求汉字输 入的最高速度 如 IBM 等硬软件厂商推出的汉语语音识别系统和手写板输入 将人员朗读的语音或书 写的文字录入计算机 转换为文本文件 既方便又快捷 是中文输入的发展方向 但目前手写输入只能识别部分草书 不能连续书写 不能写词语 更不能输写 句子了 而且手写输入的识别率不是很高 一般都需要从候选字中选字 输入效 率不是很高 而语音识别现在正处于初级阶段 即使对标准的普通话的识别也不 是很高 而且汉字的同音字很多 这就需要根据语境识别是哪一个汉字 而且很 多语音是没有语境的 如人名 地名 非常用词等 这些都决定了语音输入需要较 长时间的研究才能达到实用水平 1 2 手机操作系统的介绍 目前主流的手机操作系统主要有以下四种 Symbian公司的Symbian OS 微软的Windows Mobile Palm以及Linux等 图1 1 手机操作系统市场占有率 图1 1显示出目前手机操作系统中Symbian OS占了63 2 Windows Mobile占了5 4 Linux占了30 3 Palm占了0 7 显然SymbianOS在市场上占 有率最高 其次是Linux 本次设计基于Symbian OS操作系统 1 2 1 Symbian开放式操作系统 Symbian操作系统提供了灵活的应用界面 UI 框架 不但使开发者得以快速掌握 必要的技术 同时还使手机制造商能够推出不同界面的产品 Symbian系统手机 可以采用多种应用界面形式 一类在设计上很类似当前最常见的手机 即主要通 过键盘进行输入的手机 另一类是使用手写笔进行操作 还有一类是既有键盘又 有触摸屏的手机 它具有较大的屏幕和较小的键盘 不同的输入方式和外观设计 会对各款手机的主要用途产生很大的影响 应用界面在要求上是由手机本文源 自六维论文网和市场决定的 有了Symbian操作系统 手机制造商和第三方开发 者就可以为上述各类手机开发出独具特色的应用界面 例如 1 采用数字键盘的手机 Symbian s60 此类手机需要灵活的应用界面 方便用户使用导航键 Joystick 软按键或转点通 键 Jogdial 操作 诺基亚3650和N Gage也就是代表他们采用了Series 60应用界面 如诺基亚 6600 诺基亚 7610 诺基亚 6670等 2 采用触摸式屏幕的手机 Symbian UIQ 这类体功能的手机 移动终端汉语拼音输入法及本地搜索接口实现技术 3 采用完整键盘和超大彩色屏幕的手机 Symbian s80 此类手机为那些需要在办公室以外编辑信息和查看业务数据的用户提供了先进 的移动通信功能 诺基亚9300 9500个人通讯器系列是此类应用界面的典型代表 1 3 Series60简介 Symbian OS系统按照人机界面交互大致可以分为Series60 Series80 Series90和UIQ 对应 的Nokia手机产品线则分为Series40 Series60 Series80 Series 60 平台是在Symbian OS之上进行构建的 通过可配置的图形化用户接口库 全面地应用程序套件以及 其它通用引擎进行了补充 Series 60是一个完全智能手机的参考设计 正是由于它有如此多的优点而越来越被嵌 入式开发人员所青睐 可以想象在其完全开源之后将会有更为广阔的应用前景 它将不再仅仅用在智能手机之上 而是作为一个嵌入式操作系统而被移植到其 它的设备上 如GPS PDA等 而目前从事的主要是在这个平台上开发应用软件 1 4 文章组织结构 本论文共分为四章 具体安排如下 第一章 引言 简要介绍了本课题的相关背景 并给出了本论文的组织结构 第二章 J2ME与Eclipse简介 本章主要介绍了J2ME技术和Eclipse的基础知识 简要讲解 了J2ME总体结构中的配置 与S60的结合以及J2ME与Eclipse的特点等 第三章 智能终端输入法的总体设计 第四章 汉语拼音输入法的实现 本章详细介绍了汉语拼音输入法的开发过程 第五章 汉语拼音输入法的移植与测试 第二章 J2ME与Eclipse简介 2 1 J2ME简介 根据Sun的定义 J2ME是一种高度优化的Java运行环境 主要针对消费类电子设 备的 例如蜂窝电话和可视电话 数字机顶盒 汽车导航系统等等 J2ME将所有 的嵌入式装置大体上区分为两种 一种是运算功能有限 电力供应也有限的嵌入 式装置 比方说PDA 手机 另外一种则是运算能力相对较佳 并且在电力供应上相对比较充足的嵌 入式装置 比方说冷气机 电冰箱 电视机顶盒 set top box 因为这两种型态的嵌入式装置 所以Java 引入了一个叫做Configuration 的概念 然后把上述运算功能有限 电力有限的嵌入式装置定义在Connected Limited Device Configuration CLDC 规格之中 所使用的Java虚拟机为 KVM Kauai Virtual Machine 而另外一种装置的规范为 Connected Device Configuration CDC 规格 所使用Java虚拟机为CVM C Virtual Machine J2ME的基本类程序包如图2 1所示 显然 CDC和CLDC只是对各类信息家电中最具共性的内容进行抽象 形成适合 于某个范畴中设备可用的规范即配置 configuration 所谓配置就是由一组核心 类库和一个运行在特定类型设备上的虚拟机组成 它为应用程序提供了运行基 础 配置是针对设备的软硬件环境严格定义的 但是不同应用场合的信息家电 事实上还是有很大的差异 所以 Sun公司的做法是在共同的CDC CLDC配置上 再添加使用特定规格的配置文件 即将某一个行业或领域内设备的特性提取出 来 形成相关的配置文件即简表 Profile 简表是针对某一类设备所制定的规范 和API 它们只在某些设备上可用 与配置相比 简表更多的是针对软件接口的定 义 简表有必须实现的 也有可选的功能 因此 简表更灵活 不同的虚拟机 配 置和简表之间的关系如图2 2所示 2 2 MIDP应用程序体系结构 从上面的J2ME体系结构的介绍可知 简表是位于配置之上的一层 用来定义一 个特定的 垂直 设备家族的特殊需求 CLDC虽然为那些资源受到限制 不足以 支持整个J2SE虚拟机环境以及J2SE核心类库的设备提供了运行Java程序的基础 但是CLDC中并没有针对移动设备的用户界面 输入时间处理机制 持久性存储 和网络连接等高度的设备具体性进行定义 因此 需要在CLDC所定义的抽象设 备上再对各类设备进行细分 并为每类设备定义一个简表 Profile 以便实现相 应的功能 MIDP是位于CLDC上层的简表 是目前J2ME平台中发展最成熟 最广 为人知的简表 图2 3显示了MIDP的应用程序体系结构 在这个硬件上方是KVM 再往上一层是CL DC层 这一层表示K虚拟机以及与之相联系的CLDC规范定义的库 这一层表示 K虚拟机以及与之相联系的CLDC规范定义的库 这一OEM Specific API 它是原始设备生产商 OEM 可能提供的API 最上层展示了移动信息设备 中支持的应用程序类型 MIDP应用程序 OEM Specific程序 Native 本地 应用程序 2 3 J2ME与S60的结合 2 3 1 J2ME的优势 使用J2ME的一个关键优点是 J2ME与所有支持Java的手机都是兼容的 所谓支 持Java的设备 就是任何运行Java虚拟机的计算机或者设备 Ericsson Motorola Nokia Panasonic以及Nextel等各大厂商都生产支持Java的设备 Java的与平台无关性的一个非常关键的技术就是上文所提到的Java虚拟机 JVM 在智能手机上则是KVM 一般的高级程序语言要在不同的平台上运行 至少需 要编译成不同的目标代码 而引入Java语言虚拟机后 Java语言在不同平台上运 行时不需要重新编译 Java虚拟机屏蔽了与具体平台相关的信息 使得Java语言 编译程序只需生成在Java虚拟机上运行的目标代码 字节码 就可以在多种平台 上不加修改地执行 Java虚拟机在执行字节码时 把字节码解释成具体平台上的 机器指令执行 2 3 2 J2ME与输入法的游戏开发 上文提到 Symbian OS采用了多种平台 这样虽然满足了不同人群的应用需也给Symbian OS带来了一种限制性的发展障碍 各个平台之间第三方软件不兼容 给用户带来 了一定的不便 我们使用J2ME就打破了这种限制 只要智能手机支持Java 那么编写出来的软件 就可以移植到任何手机上 给编码带来极大便利 虽然由于Java的特性可能会降 低程序运行效率 但对于一般的应用已经足够 鉴于S60是目前Symbian智能手机 中出货量最大的用户界面 所以我们选择了Symbian S60作为我们的开发平台 2 3 3 J2ME配置 配置是指将基本运行时环境定义为一套核心类和一个运行在特定类型设备上的 特定的JVM 目前 J2ME中有两种最主要的配置 分别是CLDC Conne本文源自 六维论文网cted Limited Device Configuration 和CDC Connected Device Configuration 他们是根据设备的硬件性能进行区分的 包括处理器 内存容量 等 1 CLDC 连接限制设备配置 Connected Limited Device Configuration 的官方定义是这样的 亲便 覆盖区域最小的Java构建块 适合小 型的有资源限制的设备 所以CLDC是为运行在资源非常有限的设备商的Java ME应用程序制定的构架 致力于低端的消费类设备 典型 移动终端汉语拼音输入法及本地搜索接口实现技术 的例子包括个人的 移动的 电池供电的 互联的信息设备像手机 双向传呼机 和个人信息管理器等 CLDC简要描述了高度受限的设备上每个J2ME执行所要求的一套最基本的库和J ava虚拟机特征 CLDC主要面向那些网络连接速度慢 电能有限 电池供电 128 KB 512KB内存的设备 非稳定内存中的内容是持久的 并且有写保护 CLDC中包含 了简化版的java lang java io java util和专门为Java ME加入的Java microedition io包 2 CDC 连接设备配置 Connected Device Configuration 应用在具有较大内存 特别是2MB以上的设备上 其内存可以是R AM ROM或是Flash 致力于高端的消费类设备 典型例子包括共享的 互联的信 息设备如电视机机顶盒 Internet电视和端的通信设备 CDC的虚拟机被称为CV M compact VM CDC与CVM和Foundation Profile共同定义了完整的J2ME环境 图2 4显示了CDC CLDC和J2SE之间的关系 由图可见 CLDC是CDC的一个子集 C DC和CLDC都删减了J2SE的部分内容并对J2SE做了必要的扩充 图2 4 J2SE CDC与CLDC之间的关系 CLDC类库一部分来自J2SE 这部分类库是经过裁剪的 去除了不必要的功能 其专有类库则主要是 通用连接框架 GCF 为CLDC提供网络连接功能 CDC类库则是CLDC的超集 因此为CLDC开发的应用程序可以移植到CDC平台 2 4 eclipse简介 Eclipse是一种可扩展的开放源代码IDE 2001年11月 IBM公司捐出价值4 000万 美元的源代码组建了Eclipse联盟 开发 集成开发环境 IDE 经常将其应用范围限 定在 开发 构建和调试 的周期之中 为了帮助集成开发环境 IDE 克服目前的局 限性 业界厂商合作创建了Eclipse平台 Eclipse允许在同一IDE中集成来自不同 供应商的工具 并实现了工具之间的互操作性 从而显著改变了项目工作流程 使开发者可以专注在实际的嵌入式目标上 Eclipse框架的这种灵活性来源于其扩展点 它们是在XML中定义的已知接口 并 充当插件的耦合点 扩展点的范围包括从用在常规表述过滤器中的简单字符串 到一个Java类的描述 任何Eclipse插件定义的扩展点都能够被其它插件使用 反 之 任何Eclipse插件也可以遵从其它插件定义的扩展点 除了解由扩展点定义的 接口外 插件不知道它们通过扩展点提供的服务将如何被使用 利用Eclipse 我们可以将高级设计 也许是采用UML 与低级开发工具 如应用调 试器等 结合在一起 如果这些互相补充的独立工具采用Eclipse扩展点彼此连接 那么当我们用调试器逐一检查应用时 UML对话框可以突出显示我们正在关注 的器件 事实上 由于Eclipse并不了解开发语言 所以无论Java语言调试器 C C 调试器还是汇编调试器都是有效的 并可以在相同的框架内同时瞄准不同的进 程或节点 Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件 这类似 于微软公司的Visual Studio和Sun微系统公司的NetBeans平台 Eclipse为工具开发商提供了更好的灵 活性 使他们能更好地控制自己的软件技术 eclipse是一款非常受欢迎的java开 发工具 使国内的用户越来越多 实际上使用它的java开发人员是最多的 缺点 就是较复杂 对初学者来说 理解起来比较困难 针对eclipse的插件目前已有上千种 eclipse的核心就是插件扩展机制 所谓一切 皆为插件 我们也可以用eclipse开发出自己的eclipse插件 Eclipse是一个开放源 代码的软件开发项目 专注于为高度集成的工具开发提供一个全功能的 具有商 业品质的工业平台 它主要由Eclipse项目 Eclipse工具项目和Eclipse技术项目三 个项目组成 具体包括四个部分组成 Eclipse Platform JDT CDT和PDE JDT支持Java开发 CDT支持C开发 PDE用来支持插 件开发 Eclipse Platform则是一个开放的可扩展IDE 提供了一个通用的开发平台 它提供建造块 和构造并运行集成软件开发工具的基础 Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个 工具功能在哪里结束 而另一个工具功能在哪里开始 Eclipse SDK 软件开发者包 是Eclipse Platform JDT和PDE所生产的组件合并 它们可以一次下载 这些部分在一起提 供了一个具有丰富特性的开发环境 允许开发者有效地建造可以无缝集成到Ecli pse Platform中的工具 Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成 E clipse项目生产的软件以 CPL发布 第三方组件有各自自身的许可协议 2 5 本章小结 本章简要介绍了本此设计采用的 J2ME技术 分析了J2ME的总体结构 重点介绍了Java虚拟机 J2ME的配置和简 表 并归纳了J2ME程序开发的一般流程 另外将J2ME和Java 2的其它版本进行了对比 等等 第三章 智能终端输入法的总体设计 3 1 概述 智能终端输入法的总体设计思想是 通过接口从系统获取用户的按键 然后根据 当前的输入状态调用相应的转换引擎 从字库中搜索相应的字词 然后把输入的 按键和获取的字词发送到用户界面显示出来 3 2 汉字编码的设计 在拼音输入法的设计中 汉字编码系统的设计要做到编码简单 搜索快速 下面对从搜索效果 字库的压缩以及设计的复杂度2个方面 对2种常规方案进行 比较 3 2 1 方案1 方案1很直观 直接对每一个汉字进行编码 编码结构分为编码 地址2个部分 如 图3 1所示 其编码形式是按每一汉字的按键顺序进行编码 为了便于搜索 此方案的编码采用定码长 编码中的每一个数字必须至少4个bit 存放 所以整个编码大小为3个byte 地址段用于存放汉字在字库中的地址 如果字库为5 000个汉字 则地 可见 方案1 编码方便简单 但是占用空间比较大 效率不高 3 2 2 方案2 方案2 在方案1 的基础上作了一些改进 由于有些汉字的拼音相同 即汉字的拼音编码有重码 因此不需要对每一个汉字进行编码 从而可节省存储空间 改进后的编码结构如 图3 2所示 移动终端汉语拼音输入法及本地搜索接口实现技术 图3 2 方案2的编码结构 方案2 没有对每一个汉字进行编码 而是将所有发音相同即编码相同的汉字编为1 组 在编码结构上相对于方案1 增加了1个长度字段 用于表示同1 组汉字的多少 其长度为7 bit 这已经足够大了 但是其编码字段的编码方式仍然和方案1 相同 仍假设对5000 汉字进行编码 仍然为3byte 地址字段也一样 13 bit 并假设所有汉字的编码有500个 那么该编本文源自六维论文网码方案所占空间 大小为 3 2 1 500 3KB 由上述分析可知 该方案所占空间大为减少 但是此 方案缺少搜索信息 搜索效率低 同时 采用定码长的方法 很多汉字的编码很 短就可以 此方案的编码结构不利于提高搜索效率 3 3 系统总体框架的描述 系统的总体框架图如图3 3所示 图3 3 系统总体框架图 输入模块可以说是1个接口 它一方面要与用户相联系 时时接收用户的输入 另 一方面 输入模块必须为后面的搜索做准备 起到1个预处理的作用 比如当输入 2 键时 输入模块将其转化为 abc 3个字母 并存储于数组中 以供搜索时使用 由于存在同一编码不同发音的汉字的现象 这就需要一对上下按钮来让用户选 择何种发音 同时由于同一拼音的汉字可能很多 在一页中无法显示 因此需要 一对左右按键 以供用户翻页查找 为了让后面模块完成其功能 输入模块必须 记录用户按下这2 对按键的次数 检索模块是整个系统的核心模块 当用户输入时 检索模块根据输入模块提供的 字母进行查找 整个编码体系称之为索引 而检索模块的搜索也在索引中进行 为了缩小搜索范围 字库内的汉字根据汉字拼音第一个字母被归为8 组 如 abc def ghi 等 汉字提取模块的功能主要是根据检索模块提供的结果 在字库中提取汉字以供显示 检索模块检索所得到的结果是当前输入字母在索引表中的地址 需要根据编码 结构中的地址字段来找到对应的地址 显示模块也就是输出模块 汉语拼音输入时需要显示的内容有3 项 拼音 同一拼音的汉字列表以及正在编辑的文本 在实际的手机系统中 汉字是经字模转换程序转换后 以16 16 点阵形式存放的 所以本文最终在3G终端实现时 是液晶片通过点阵形式显示 3 4 智能终端汉语拼音输入法系统的框架设计 刚进入输入法时处于初始化状态 当用户输入一个输入码后 则切换到输入状态 并向输入法管理模块发送查找请求 在获得回复后将查找结果显示给用户 当 用户删除输入码至长度为零时 则返回到初始化状态 另外在初始化状态下 用 户还可以通过标点符号键调出符号对话框 从而输入相应的标点 本次输入法系 统由下列几个部分组成 文字库 包括和用户输入的语言相关的内容 用户界面 包括状态窗口 候选窗口 指南窗口 输入法控制模块 负责在用户界面和文字库 之间通信 系统的详细模块关系如图3 4所示 图3 4 详细系统模块关系图 图形绘制模块最主要的就是提供绘图功能 实现绘制方块和界面 控制方块移动 并响应按键事件 控制按键与方块之间的同步等方法 3 5 输入法的流程设计 用户在应用输入法时 输入法的运行的流程图如图3 5所示 输入法在应用的过程中会按照用户的选择进行判断用户所需要输入的是 汉字 大写的英文 小写的英文还是想要输入标点符号 以及输入标点符号的过 程中需要输入的是全角标点还是半角标点 按照用户的选择输入法会显示不同 的界面 当用户输入了错误的文字可以选择删除 当用户对已经输入的文本发现 前面有输入的错误后漏掉一些文字是可以移动光标到想要修改的地方进行修改 图3 5 输入法运行的流程图主要模块的概要设计 3 6 1 输入法控制模块与文字库模块的概要设计 对于同一个输入消息 不同输入方式下的输入法往往需要不同的逻辑处理 如图 3 6所示 图3 6 输入法控制模块 本设计中 采用了树形结构作为数据结构 树结构是一类重要的非线性数据结构 其中以树二叉树最为常用 直观看来 树是以分支关系定的层次结构 其整体 结构如图3 7所示 图3 7是一个树形的层次结构 这里假设第一次下的是 2 键 因而此结构的根尾 2 由于 2 键对应的字母 abc 在汉语拼音中均可作第一个字母 因此其子树有3 个 同样下面的结构也是如此 都是本结点以及前面的父结点组合后可能的拼音 比如 ai an 都是有可能的拼音 因此 i n 作为 a 的子结点 而 bai ban 也是成立的 所以在 b 后放一 a 结点 在 a 结点后放 i 和 n 作为 a 的子结点 图3 7 层次结构图 符转换程序后 就必须对 a b c 查找 显而易见 其结果必定是根结点的子 结点 a b c 均符合要求 故搜索程序记录了这3个结点 若现在用户需要查 找字母 a 则必须分别从这3个结点出发来查询其各子结点 由此设计输入法的 搜索算法如图3 8 图3 8 搜索算法流程如 3 6 2 输入法客户端概要本文源自六维论文网设计 客户端的主要功能是接收用户输入 根据输入码获取候选字词供用户选择 并将 最终用户选择的文木发送到目标窗口中 客户端框架图如图3 9 移动终端汉语拼音输入法及本地搜索接口实现技术 图3 9 客户端设计模块 本设计中使用的模拟器的按钮控件作了23个按钮 左右键 选择列表中拼音 上 下键 对同一拼音的汉字序列翻页 键 输入标点符号 2 到 9 键 用于输入拼 音或确认时的选择 确认 键 找到目标汉字后的确认输入 0 按钮 取消输入的 拼音或删除输入文本 下面就左右键作简单介绍 流程如图 3 10 所示 图3 10 左右键操作简介 由于数字键盘中1个数字键对应多个字母 因此在用户输入的过程中必然会生成 许多键盘按键方式相同 但拼音不同的汉字 而用户需要的拼音又往往不是第一个 因此需要用1 对左右键进行选择 主要是使用了 个标志UDorder 通过它对保存在数组中的查询结果进行选择 3 5 本章小结 本章对整个课题的主要模块也框架进行了概要的分析 针对拼音输入法系统这 一具体课题 进行了概要的设计分析 为后续章节的模块设计奠定了基础 在以 上分析的同时 本章得出了一个合理的软件结构 这对软件的整体布局和深入理 解 有很大的作用 总之 本章内容讲述的是软件设计和具体实现前的重要步骤 合理的软件需求分析 会给后续的开发带来极大的便利 第四章 输入法的详细设计与实现 整个输入法分为3大模块 分别是文字库处理模块 输入法输入处理模块 主控制 模块 下面分别对其进行详细的分析 4 1 输入法的文字库处理模块的设计 文字库处理模块是本论文研究的重点 主要涉及到文字库的设计 按键事件的处 理 对输入的拼音的搜索与匹配 该模块的类结构主要由CharLibrary 1类 CharL ibrary 2类 CharLibrary 3类 Spell2Chars类 等四大类构成 CharLibrary 1类 CharLibrary 2类 CharLibrary 3类中设计汉字库 每组汉字由 对应的汉语拼音索引 根据传递过来的输入法虚拟按键来处理按键 Spell2Chars类根据拼音选择汉字组获得该拼音下的汉字序列如果拼音为空 就返 回空否则取拼音的长度并把拼音的每个字符放在定义的一个数组里里然后根据 不同长度拼音不同处理 在此模块中同样要在处理判断当前的输入状态 如果是 汉字输入状态 则把它发送给汉字输入处理模块 它调用汉字编码转换引擎来处 理 如果是其他输入状态 则把它发送给英文数字处理模块 它调用英文数字转 换引擎来处理 1 汉字处理模块 把 0 9 对应的候选汉字发送给应用程序 同时汉字编码转换引擎中的编码清0 然后调 用汉字编码转换引擎的缓存调整模块 把选择的汉字调整到缓存词组的第一个 位置 当按键为后退键时 删除汉字编码转换引擎中的最后一个编码 然后用删 除后的编码搜索 并把搜索结果通过候选窗口显示出来 2 数字输入时 当按 键0 9 号键 号键和 号键时 直接把按键对应的字符 0 9 发送给应用程序 当按键为后退键时 删除上一个输入字符 其他按 键不进行处理 3 英文输入时 当前按键与上一个按键不同时 当前按键为 则进入符号输入模式 当前按键不为 时则退出符号输入模式 然后把当前编辑 字符串里的字符发送给应用程序 主要是因为英文输入时支持多重按键 即按下 2 号键输入字母a 再按一下输入字母b 这些多重按键字符是保存在编辑字符串 中的 所以要把这些编辑字符串中的内容发送到应用程序 再存放新的字符 以 避免被新的字符覆盖 当前按键为0号键时 直接发送字符 0 给应用程序 当前 按键为 号键时切换英文大小写模式 当前按键为后退键时 如果编辑字符串中 有字符 则删除编辑字符串中的字符 如果编辑字符串中没有字符 则删除应用 程序中的一个字符 当前按键为 键时 获取下一个符号 把它放到编辑字符串中 当前按键为 2 9 号键时 根据当前按键 上一个按键和当前大小写输入模式 获取当前输入字符 放到编辑字符串中 其他按键 当前编辑字符串中有字符时 把当前编辑字符串 中的字符发送给应用程序 不对按键进行其他任何处理 CharLibrary 1类 CharLibrary 2类 CharLibrary 3类 Spell2Chars类 这四个类的 类图如图4 1所示 图4 1 CharLibrary 1类 CharLibrary 2类 CharLibrary 3类 Spell2Chars类类图 本模块时本次设计的重点 根据输入法此模块设计的结果对各个类进行编码实 现 考虑到此模块的整体代码行非常长 在此仅对部分关键代码进行分析 Spell2 Chars类中getInput2Spell函数实现拼音索引表 拼音索引表根据不同的内码转换 为相应的拼音 其相应的代码如下 else if spellNumber 3464 result DING 类public class CharsLibrary 1 public class CharsLibrary 2 public class CharsLibrary 3 存储了本次输入法设计的文字库 本次定义一个字符数组存储 每组拼音所对应的汉字 并通过unsigned char mge ime char mgePY ime mb实现了在拼音索引表中检索匹配的索引 通过索引检索到相应的 汉字数组 文字库部分代码如下 public class CharsLibrary 1 private CharsLibrary 1 public static final char A 啊 阿 呵 吖 嗄 腌 锕 public static final char AI 爱 矮 挨 哎 碍 癌 艾 唉 哀 蔼 隘 埃 皑 呆 嗌 嫒 瑷 暧 捱 砹 嗳 锿 霭 乃 剀 呃 噫 奇 阂 public static final char AN 按 安 暗 岸 俺 案 鞍 氨 胺 厂 广 庵 揞 犴 铵 桉 谙 鹌 埯 黯 干 盒 钳 顸 public static final char ANG 昂 肮 盎 仰 public static final char AO 袄 凹 傲 奥 熬 懊 敖 翱 澳 嚣 拗 媪 廒 骜 嗷 坳 遨 聱 螯 獒 鏊 鳌 鏖 岙 噢 棍 浇 public static final char BA 把 八 吧 爸 拔 罢 跋 巴 芭 扒 坝 霸 叭 靶 笆 疤 耙 捌 粑 茇 岜 鲅 钯 魃 菝 灞 伯 捭 杷 湃 萆 public static final char BAI 百 白 摆 败 柏 拜 佰 伯 稗 捭 呗 掰 扒 排 派 薜 鞴 public static final char BAN 半 办 班 般 拌 搬 版 斑 板 伴 扳 扮 瓣 颁 绊 癍 坂 钣 舨 阪 瘢 分 彬 豳 辨 辩 public static final char BANG 帮 棒 绑 磅 镑 邦 榜 蚌 傍 梆 膀 谤 浜 蒡 彭 旁 纺 螃 public static final char BAO 包 抱 报 饱 保 暴 薄 宝 爆 剥 豹 刨 雹 褒 堡 苞 胞 鲍 炮 瀑 龅 孢 煲 褓 鸨 趵 葆 勹 呆 簿 袍 裒 public static final char BEI 被 北 倍 杯 背 悲 备 碑 卑 贝 辈 钡 焙 狈 惫 臂 褙 悖 蓓 鹎 鐾 呗 邶 鞴 孛 陂 碚 俾 埤 怫 波 菩 萆 葡 蜚 跋 public static final char BEN 本 奔 苯 笨 夯 锛 贲 畚 坌 体 public static final char BENG 蹦 绷 甭 崩 迸 蚌 泵 甏 嘣 俸 傍 唪 堋 平 抨 旁 榜 public static final char BI 比 笔 闭 鼻 碧 必 避 逼 毕 臂 彼 鄙 壁 蓖 币 弊 辟 蔽 毙 庇 敝 陛 毖 痹 秘 泌 秕 薜 荸 芘 萆 匕 裨 畀 俾 嬖 狴 筚 箅 篦 舭 荜 襞 庳 铋 跸 吡 愎 贲 滗 濞 璧 哔 髀 弼 妣 婢 仳 佛 卑 埤 复 媲 幅 庀 拂 捭 服 枇 檗 殍 波 瞥 纰 脾 虑 被 费 跛 鐾 陂 陴 馥 函数unsigned char mge ime char mgePY ime mb实现了在拼音索引表中检索匹配的索引 通过索引检索到相应的 汉字数组 unsigned char mge ime作用是用来将完全匹配的索引都存到cpmgePY Mb里 并找出完全匹配 的组数 char mgePY ime mb函数的作用是如果有匹配的索引组数 则取第一组里的PY mb 即 取输入的数字组合对应的汉字 如果没有匹配的索引组 则返回空字符串 unsign ed char mge ime相应的代码如下及相应的注解如下 unsigned char mge ime char strInput mge str struct mge index cpHZ 首字母索引 struct mge index cpHZedge 指向了最后一个索引 structmge index cpHZTemp unsigned char i j unsigned char cInputStrLength strlen strInput mge str 输入拼音串长度 cpmgePY Mblen 0 完全匹配组数 j 0 j为匹配最大值 if strInput mge str 0 return 0 如果输入空字符返回0 if strInput mge str i cpHZ mge T9 i 检查字符串匹配本文源自六维论文网 就是看输入的数字字符是否和索引表中 的数字一一相对应 if i 1 j j i 1 j为匹配最大值 cpHZTemp cpHZ break 发现字母串不配 退出 if i cInputStrLength cpmgePY Mblen cpHZ if j cInputStrLength 不完全匹配输出最多匹配的1组 cpmgePY Mb 0 cpHZTemp return cpmgePY Mblen 输出完全匹配组数 0为无果而终 4 2 输入法输入模块的设计 输入法用户输入模块主要包括状态窗口 编辑窗口和候选窗口 而一般状态窗口 不用一个窗口来显示 而是用右上角的一个图标来显示当前的输入法状态 所以 主要实现编辑窗口和候选窗口 输入法用户界面模块类结构主要有InputEdit类C utString类 InputEdit类和CutString类实现对用户界面的编辑和光标的移动 右侧 滑竿光标索引超出屏幕文字行数每行文字的半段 填充区高度显示区域 显示文 字的行数 可绘制区域最大高度可绘制区域最大宽度 文本编辑区域每行字数 拼音编辑区宽度输入类型 显示区域宽度 当前拼音对应的字符的输入框的高度 显示 当前拼音对应字符的输入框宽度 输入框间隔输 入超时时间等等的处理 InputEdit类 CutString类的类图如图4 2所示 移动终端汉语拼音输入法及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区服务质量安全培训课件
- 2025年阜阳界首市“政录企用”人才引进8人模拟试卷及答案详解(夺冠)
- 什么是保险合同的宽限期、中止期、终止期5篇
- 高校教师资格证考试历年真题汇编
- 2025安徽黄山市黄山区消防救援大队政府专职消防员招聘2人考前自测高频考点模拟试题及答案详解(易错题)
- 建筑工程安全施工管理
- 农业机械化节能技术研究-洞察及研究
- 社交媒体营销对摄影工作室盈利的影响-洞察及研究
- 2025湖南娄底市冷水江市城发实业有限公司招聘实验室试验员3人考前自测高频考点模拟试题附答案详解(考试直接用)
- 人工智能辅助禽类疾病精准治疗-洞察及研究
- 2025新外研版初中英语七年级上全册课文翻译
- 检验科室内质控培训课件
- 七一党课:传承红色基因勇担时代使命2025年建党104周年“七一”专题党课
- 桥梁拆除施工质量保证技术措施
- 中国电动摩托车行业发展趋势及发展前景研究报告2025-2028版
- 县红十字会日常管理制度
- 2025-2030年中国冷链物流行业深度分析及发展前景与发展战略研究报告
- 中国传统节日中秋节习俗民俗简介介绍主题班会
- 教育学原理项贤明题库
- 《王戎不取道旁李》教案
- 医学检验技术课件教学
评论
0/150
提交评论