y + i * rowHeight - rightLineIndex * rowHeight, 0);
}
//绘制光标
cursorCount++;
graphic.setColor(0);
if(cursorCount % 6 == 0 && isShowCursor){
int _x = x;
if(textVector.size() > 0)
_x = x + font.stringWidth(textVector.elementAt(cursorH).toString().substring(0,cursorIndex));
graphic.drawLine(_x, y + (cursorH) * rowHeight - rightLineIndex * rowHeight, _x,
y + (cursorH) * rowHeight + fontWidth + 2 - rightLineIndex * rowHeight);
}
count = textVector.size();
drawRightLine(graphic, x, y);
graphic.setClip(oldCilpX, oldCilpY, oldCilpWidth, oldCilpHeight);
if(oldFont != null)
graphic.setFont(oldFont);
return count;
}
4.3 主控制模块
所有的J2ME程序都必须包含有一个继承自javax.microedition.midlet.MIDLet的类,作为整个程序的入口点。本输入法中,入口程序是MainMIDLet。它作为程序的主控类,维护程序的运行状态,为系统的初始化,启动,输入状态的改变等提供方法,其它的工作几乎不涉及。MainMIDLet类图如图4-3所示。
图4-3 MainMIDLet类图
4.4 本章小结
本章详细介绍了智能终端输入法的设计与实现。对输入法进行了详细的设计,分析了各模块构成,给出了部分关键代码的实现。
第五章 输入法的测试与移植
在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的每个阶段都不可避免地会产生差错。故而无论怎样强调软件测试的重要性和它对软件可靠性的影响都不过分。软件编码人员力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。
使用人工或者自动手段来运行或测试某个系统的过程,其目的就在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,并在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。
软件测试是软件质量保证的重要手段。有些研究数据显示,国外软件开发机构40%的工作量花在软件测试上,软件测试费用占软件开发总费用的30%至50%。对于一些要求高可靠、高安全的软件,测试费用可能相当于整个软件项目开发所有费用的3至5倍。由此可见,要成功开发出高质量的软件产品,必须重视并加强软件测试工作。实际上,大约还有同样多的开发工作量需要完成。仅就测试而言,它的目标是发现软件中的错误,但是,发现错误并不是最终目的。软件工程的根本目标是开发出高质量的完全符合用户需要的软件。
总之,软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。对一个软件成品而言,这显得至关重要。
5.1 模拟器测试
此次设计的输入法可以进行汉语拼音的输入,大写英文的输入,小写英文的输入,同样可以半角、全角标点符号的输入。下面将对各种功能进行测试。
(1)初始界面的测试,开启程序运行游戏在WTK模拟器运行的初始界面如图5-1所示:
图5-1 输入法的初始界面
(2)汉语拼音输入的测试:点击模拟手机按键输入“今天” 的拼音,测试输出的结果,如图5-2
图5-2 汉语拼音输入的测试
(3)大小写英文的测试:点击模拟器手机按键分别用大小输入英语单词“CHINESE”
“chinese”输出结果如图5-3。
图5-3 大小写英文的测试
(4)数字输入的测试:点击模拟器手机按键输入数字“123456”输出结果如下图5-4
图5-4 数字输入的测试
(5)标点符号输入的测试,如图5-5
图5-5 标点符号的输入
5.2 移植和真机的测试
手机程序与PC程序开发时有一个很大的不同,PC程序开发阶段中的测试只要在PC上完成就可以,而手机程序开发时为方便起见可以在模拟器上测试,但是最终必须在真机上运行通过。而真实手机的环境与模拟器又有所不同,首先,我们使用的模拟器只有一个版本,不可能做到对应不同种类的手机安装不同的模拟器,因此,最终运行在手机上的程序的画面可能与模拟器显示的有所区别;其次,模拟器在PC上运行时系统资源充足,运行速度快,而手机上资源有限,有一些bug在PC模拟器上无法察觉,移植到手机上时才会出现。因此,对开发的手机程序进行真机测试是测试中必不可少的一个环节。
一般测试过程如下:
使用Eclipse生成Jar文件
拷贝Jar文件到手机存储卡
在手机文件管理器中选择Jar文件安装
运行程序
我们使用Nokia N78进行测试,以下是一部分测试截图(图5-6),鉴于测试功能跟模拟器相同因此不再赘述测试过程。
图5-6 手机测试截图
5.3 本章小结
本章是课题完成的最后部分,主要介绍软件设计实现后的测试和移植。软件的测试是为了发现错误,一个设计合理的软件测试能保证软件投入使用后的正确性。本次设计的输入法是基于Symbian OS开发出的手机应用程序,因此,在最后的环节中,应该根据软件移植的一般要求和原则,对该软件进行移植,并保证手机环境下该软件的正确使用。
结束语
随着移动网络的不断深入应用,基于手机平台的移动开发有着广阔的前景。然而目前手机平台上的汉字输入法种类少且功能有限,因此开发针对手机平台的智能汉字输入法有强烈的现实意义。
本次设计运用J2ME技术,开发和扩展比较方便。本次设计的输入法支持汉语拼音、英文ABC、数字、标点符号的输入,并且开发了方便用户使用的用户界面,应用起来方便简单。
当然,本次设计的输入法还有很多可以改进的地方。譬如
(1)本次设计的拼音输入法在字库容量较大时,输入效率比较低,搜索算法和结构还不是很合理.
(2)由于汉语拼音和汉字不是一一对应的,造成了在编码时产生大量重码,以至输入效率低。
(3)对词库的网络更新设计还需进一步的研究。
限于本人水平有限,文档中定有大量不足之处,恳请各位老师给与指导。
参考文献
[1] 万辉, 万军. 基于Eclipse环境的J2ME应用程序开发[M]. 北京: 清华大学出版社, 2009:10-40.
[2] 池雅庆, 周珺, 王耀. J2ME手机应用项目开发实践[M]. 北京: 中国铁道出版社, 2007:4-138.
[3] 陈旭东, 徐保民, 张宏勋. J2ME应用教程[M]. 北京: 清华大学出版社, 2006:64-97.
[4] 胡虚怀, 杨志和, 李焕. J2ME移动设备程序设计[M]. 北京: 清华大学出版社, 2005:7-78.
[5] Topley,K. J2ME in a Nutshell[M]. 张伶, 林琪,译. 北京:中国电力出版社, 2004:157-198.
[6] 王庚. 基于Symbian OS的S60手机游戏开发[D]. 天津: 天津大学, 2005.12.
[7] 和敏. 基于J2ME的手机游戏开发模式研究[D]. 上海: 复旦大学, 2008.2.
[8] 唐娟. 基于Symbian OS的手机游戏引擎的研究及应用[D]. 天津: 天津工业大学, 2008.1.
[9] 杨帆. 基于J2ME的手机游戏设计[D]. 成都: 电子科技大学, 2006.2.
[10] 赵彦凯. 浅析游戏引擎技术[J]. 科技咨询导报, 2007(16),43-44.
[11] 金鑫. 游戏引擎在游戏开发中的应用[J]. 电脑知识与技术, 2007(19),170-171.
[12] 高凌琴, 陈青华. 俄罗斯方块游戏关键技术探讨[J]. 信息技术与信息化, 2008(2),69-71.
[13] 杨祥吉. 一个基于手机平台的高速2D游戏引擎的设计与实现[D]. 成都: 电子科技大学, 2006.6.
[14] 杨常青 彭木根著. Symbian S60手机程序开发与实用教程[M]. 机械工业出版社, 2008.
[15]何伟 张兵 杨宗德著. 基于SymbianOS的手机开发与应用[M]. 人民邮电出版社,2006.
[16] 付朝晖,王建新. 基于J2ME的手机游戏框架设计与优化[J]. 装备制造技术.
2007(6),p71-74.
[17] 陈晋波,李雪娟,熊飞. 手机游戏开发实践[M]. 北京:电子工业出版社, 2005:76-81.
[18] 唐寅. 实时操作系统开发指南[M]. 北京:中国电力出版社. 2002:19-30.
[19]周克兰,吕强,张玉华,潘吉斯,钱培德.试论汉字数字输入法评价[J].中文信息学
报,2007,第 21 卷第 1 期.
[20]陈天娥,赵曾贻,朱兰. 数字键中文输入的研究[J].信息技术,2002,第 10 期.
[21]蔡昭权.利用小键盘输入汉字的思路与实现[J].计算机工程与设计,2006,第 27 卷
第 5 期
[22] Bruce Eckel. Java编程思想[M]. 京京工作室译. 北京: 机械工业出版社, 1999:55-198.
[23] Bruce Eckel. Java编程思想(第二版)[M]. 侯捷译. 北京:机械工业出版社, 2002:65-95.
[24] Chuck Cavaness, Geoff Friesen, Brian Keeton. Java完全探索(第二版)[M]. 师夷工作室译. 北京: 中
青年出版社,2001:63-96.
[25] Martin de Jode著. SymbianOS J2ME编程指南. 人民邮电出版社, 2005.