EDN China > 设计实例 > 嵌入式系统 > 参考设计 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于Qtopia的嵌入式中文输入法设计

现代电子技术 廖耿耿 张建寰?? 2010年07月26日 ?? 收藏0

  随着基于ARM内核芯片的大规模应用,手持嵌入式设备迎来了一个庞大的市场。与用户直接打交道的图形界面的友好程度决定了用户对该产品的感观认识。在这个方兴末艾的市场,嵌入式Linux由于其系统优异的健壮性,以及开源、免费等显著优势,成为嵌入式设备的主流操作系统。其中,Qtopia是TrolItech公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,因其友好的界面、完善的开发环境,已被国内移动电话制造商中兴通讯选作其移动电话ZTEU980基于Linux的应用开发框架,使Qtopia电话版成为中兴通讯支持中国3G标准TD-SCDMA的核心部件,Qtopia在嵌入式市场的竞争中拨得头筹。

  在Qtopia的应用中,有许多需要用户输入本地文字的场合,如短信、通讯录及记事本等,而Qtopia现有的输入方式,是基于虚拟的QWER-TY全键盘的,在实际应用中,这种QWERTY全键盘不仅需要用户双手进行操作,而且由于按键排布紧密,从而导致误码率居高不下。

  本文提出一种基于Qtopia的采用传统九宫格方式的中文输入法设计。传统九宫格的虚拟键盘不仅符合大众的使用习惯,而且可以实现单手操作,可以为用户带来舒适的输入体验,提高产品的市场占有率。

  l Qtopia中文编码及插件技术

  要实现汉字在Qtopia系统里正确处理并显示,必须满足两个前提条件:一是系统要有支持中文的编码;另一个是要有能显示这个中文编码的字符字体存在。本文的Linux开发环境代码编辑器的编码为GBK,目标机上的Qtopia平台使用Unicode编码,所以在程序里首先按如下的方式进行编码转换:

  接下来为Qtopia系统提供中文字体,Qtopia支持多种字体。包括ttf.bdf,qpf格式。其中qpf格式的字体使用最为方便,本文采用支持中文的Simsun_120_50.qpf字体文件,把该字体文件保存至MYMQTEDIR/lib/fonts目录下,修改字体链接fontdir文件,在菜单Appearance的Font选项里选中该字体,此时系统中文显示正常。

  在Qtopm中,输入法是以基于插件的方式实现的,Qtopia插件分为应用程序插件、服务器插件和系统插件3种。其中,应用程序插件是应用程序使用的插件,服务器插件是在启动时由Qtopia服务器进行装载的插件,系统插件是在应用程序启动时被装载的插件。本文所涉及的输入法属于服务器插件。

  Qtopia中通过类似COM的层来使用插件,建立一个插件的基本步骤为:创建插件的接口;写插件将提供的功能函数;为接口定义子类;创建一个插件实例;装载插件。

  在实现输入法插件的创建后,需将该插件编译成动态链接库的形式,并安装到插件对应的目录下,对于输入法插件而言。指定的存放目录为$QTEDIR/plugins/inputmethods。系统启动时,插件装载器会自动装载这个文件夹里的输入法插件。

  2 输入法在Qtopia中的实现

  2.1 输入法模块的实现

  中文拼音输入法的设计,要实现数字拼音键到汉字的转换。所谓数字拼音是指按照手机键盘上英文字母的布局来输入汉语拼音所得到的一串数字,对于九宫格形式的虚拟键盘来说,其键盘的布局特点导致不能直接输入汉语拼音而只能输入数字键盘扫描码,然后由扫描码的识别及纠错处理模块对其进行拼音组合、文字匹配检索后才能得到相应的汉字,处理流程见图l。

处理流程

  首先用户输入的数字键盘扫描码要转换为相应的汉语拼音,本文采用查表检索法实现数字拼音到汉语拼音的转换,并对用户无效的拼音组合进行高亮提示。然后根据字典数据库检索相应的汉字,并对用户的输入进行机器学习,针对用户输入习惯不同,对用户输入常用词进行自适应排序。利用自带字库的基础语言模型与用户常用词模型相结合的检索技术对候选字进行自动排序,得到最终的候选字输出。如图2所示。

基础模型和用户模型相结合的自适应方法

  该输入法注重对用户输入的常用词、高频词的自适应,利用基础字库模型和用户习惯模型结合进行解码。主要思想是通过跟踪用户输入过程,记录用户输入习惯,然后根据用户的输入字词的不同概率动态调整相应的数据,并将结果存放于用户模型中。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

Qtopia? 嵌入式? 移植? 中文编码?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈