基于Android+SQLite藏汉电子词典应用软件的设计与实现
2016-10-24普措才仁蔡光波
普措才仁,蔡光波
(西北民族大学 数学与计算机科学学院,甘肃 兰州 730030)
基于Android+SQLite藏汉电子词典应用软件的设计与实现
普措才仁,蔡光波
(西北民族大学 数学与计算机科学学院,甘肃 兰州 730030)
通过对藏族地区游客和在藏族地区从事商业活动的汉族同胞的实际需求分析,对Android藏文显示机制、藏文视图实现、SQLite数据库、藏汉翻译模块、单词本模块等部分进行了深入的技术剖析和系统设计,并且开发实现了基于Android平台的藏汉电子词典应用软件.通过对该系统的整体性能进行测试,系统整体运行性能良好,并达到了最初的整体设计要求.
Android平台;藏汉电子词典;翻译设计
0 引言
随着移动网络技术的发展,智能手机已经开始取代大多数电子产品,一个手机软件便可拥有专业电子产品的功能,电子词典的功能已经逐渐被手机取代.同时在线翻译又不能满足很多信号不良以及缺少专业设备的偏远地区.纸质词典由于其查阅困难、不易携带、更新速度不够快等原因,也不太适应当前人们的需求.如今手机系统的趋势是Android系统.Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备.基于Android平台的藏汉词典是信息时代方便快捷的查询工具,作为一个单机版的应用软件它满足随时随地使用、操作方便、快捷、更新快以及易于携带的种种优点.本文主要解决Android端显示藏文、藏文输入等细节部分的个性化设计、数据收集及词库构建、查询处理及优化、单词本模块,满足藏区游客和藏区商人的查询需求,同时它带有的语音功能可以随时随地教用户学习藏语或汉语,单词本模块提供的旅游专业词汇、藏区商人交流专业词汇尽可能地考虑到使用人群的需求[1].
1 Android藏文显示机制
Android的显示系统非常复杂,涉及包括窗口管理服务、VIEW视图系统、SurfaceFlinger本地服务以及硬件加速等多个方面.页面和控件在窗口中的显示是以树的形式组织成一棵以主视图为根的视图树.系统要显示输出时统一调用主视图的draw 函数,由主视图的draw 函数负责各个子视图的递归绘制和效果处理[2].
1.1Android藏文字体
1.1.1安装藏文字体
先对安卓手机进行Root操作,然后进入存储卡的根目录找到并进入system文件夹,再进入font文件夹,把字符集DroidsansArabic.ttf文件复制至这个文件夹.系统会提示是否覆盖,确认替换之后,重启手机.这样手机实现了系统层支持藏文输入.
1.1.2采用编码代替文字
DDC_Uchen.tff 是一种支持藏文的特殊字体,在Android项目的assets文件夹下创立一个fonts文件夹,将DDC_Uchen.tff 文件放入其中.利用Typeface的createFromAsset方法对其进行实例化,这样Android应用就可以显示藏文.
1.1.3使用自定义字体
Android平台不同于其他平台,在应用层中使用自定义字体只需要非常简单的步骤,只用创建assets和font文件夹,将字体放入font程序中就可以直接调用,并且在应用中完美显示藏文字符.但是藏文显示仅仅只针对这一个放入字体的应用,对于藏汉词典应用来说,这就够了.我们采用自定义字体的方法解决了Android平台的藏文显示.如图1所示Android藏文显示机制[3][4].
图1Android藏文显示机制
1.2藏文字结构字体简析
藏文文字的组成部分主要是三十个辅音字母与四个元音符号,一个藏文字可以由单独的字母组成,也可以是多个字母拼组而成,但是最多不超过四个字母.在多字母组成的藏文字中,其中一个是主要的字母,称之为基字,加在基字前面的字母称为前加字,加在基字后面的称为后加字.如果在后加字后面还有字母,称之为再后加字,具体结构如图1所示.藏语句子中有不同于汉语句子的部分:藏文音节和音节之间会用顿点隔开,每句藏文的最后会划上竖线.考虑到这些特点,正确显示藏文就需要考虑到组成藏文字的各个部分的正确显示,各个部分的显示顺序,以及各个部分的间距[5].
图2复杂的藏文字
从计算机文字处理的角度看,藏文属于“复杂字体”,藏文虽然是拼音文字,但它不仅前后拼写,还可上下叠加变形组合.藏文的上下加变形显现形式和前后加变形显现形式,使藏文编码长度与藏文字符显示宽度不一致,造成了藏文显示处理比较难.因此,在藏文信息处理上,一直存在两种不同的字符集编码和实现方案:①基于藏文基本集的方案;②基于藏文扩充集的方案.
1.3藏文字体编码系统
藏文编码种类繁多,大概可以分为三大类:基于ASCII的藏文编码、基于GB2312的藏文编码和基于Unicode的藏文编码.其中ASCII是最常见的字符集,主要用于显示现代英语和其他西欧语言,是现今最通用的单字节编码系统.而基于GB2312的藏文编码是采用双字节对藏文进行的编码.Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案,它为不同语言的文字分配了惟一的编码,每个字符都有一个单一的Unicode值对应[6].
图3藏文Unicode编码图
Unicode 由第3.2版开始正式支持藏文字母,使用的区段为U+0F00至U+0FFF.藏文字母区段包括有文字、数字及多个标点符号及宗教文书上使用的特殊符号.观察该码表,占位辅音的编码范围是:0F40—0F6C.元音的编码范围是:0F71—0F81.不占位字母(除元音)的编码范围是:0F90_0FBC.
1.4OpenType技术在藏文显示中的应用
OpenType是一种基于Unicode且与平台无关的字体格式,它的优势是其跨平台性、支持Unicode字符集和高级布局特征,能够很好地支持复杂文本的处理等.采用OpenType技术,可以用国际标准编码进行藏文文字处理.
OpenType为支持藏文处理提供了字型替换表(GSUB)、字型置位表(GPOS)等布局表.在藏文叠加组合中,有些字符当跟不同的字符叠加时,原字符的大小、位置、形状都可能会发生变化.按照一个字符前后所出现的不同字符做不同的替换,就能保证正确地显示和打印该藏文字.文本输出引擎的任务就是把线性的文本流按藏文正字法要求转换为纵向与横向组合而成的平面图形符号,形成一个完整的藏文叠加字符.
1.5Android数据存储方式
基于Android的系统中,数据私有、存放在data及相关其子目录下.有四种数据存储方法:SharePreference、SQLite、Content Provider和File.
SQLite:支持最基本SQL语法,采用被动存储方式,是一种轻量型数据库.这种数据库对数据的操作封装在SQLiteDatabase类中.
SharedPreference:参数设置比较简单的情况下通常用这类存储方式,其表现形式是一种XML配置文件.
File:可以存储大量的数据,适合大数据存储,也叫IO存储方式、因为数据量大,尽管处理上有所优化,但是数据更新过程性能不佳.
2 藏汉词典系统总体设计
2.1系统总体设计
系统设计是新系统的物理设计阶段.根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下建立新系统的物理模型.这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程.这个阶段又分两个步骤:概要设计和详细设计.概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计.
2.2系统总体架构设计
藏汉词典应用软件的设计是从两部分来考虑的,第一次使用程序和使用过程序.第一次使用程序时需要建立和加载数据库文件,并且在程序界面打开之前显示一份使用指南,而在后续的使用中是直接进入应用主页面的.具体流程参考以下系统设计流程图.
图4藏汉词典系统框架
2.2.1查词功能
查词功能是在词库的基础上实现的.为确保单词量的质量和数量,经大量查询资料,长时间数据搜集,最终确认数据库.同时,查词功能分为藏译汉功能模块和汉译藏功能模块.对于没有藏文输入法或者没有汉文输入法的用户,应用提供了词典数据库文本文件下载.
2.2.2单词本功能
单词本功能是实现用户记录需重点背记的单词.由于记忆从刚建立就开始遗忘,所以在每次记忆的时候可适当在刚记住的基础上再继续多学习一些,以建立更加巩固的记忆.在恰好能背诵的标准下还继续学习,能使得记忆在脑中的保存更深刻,从而减少遗忘.记录核心词汇和针对个人记忆情况的重点词汇加以重复记忆,会大大提高记忆效率.
由表3可知,西江桂、防城桂、印尼桂和越南桂同为Cassia型肉桂,它们的精油香气成分中桂皮醛含量占比均超过55%,香气感官以桂皮特征气味为主,有辣感。其中,西江桂和防城桂的原植物同为中国肉桂,两者的感官品质和香气成分非常接近,最主要的成分是桂皮醛和α-可巴烯。在西江桂精油中,桂皮醛和α-可巴烯的百分含量分别是56.584%和16.024%;而防城桂中分别是60.890%和12.451%。桂皮醛的香气偏辛辣,而α-可巴烯赋予的是木香和甜香。故两者均为典型的桂皮甜辣香气,而西江桂更偏甜,防城桂更偏辣。
2.2.3单词记忆功能
单词记忆功能是在笔记本功能的基础上实现的.在笔记本功能模块下,通过选择记忆模式,隐藏笔记本中藏语释义或者汉语释义,用户可记录下自己的记忆情况,然后通过显示释义来核对.
2.2.4词典小知识功能
词典小知识功能是面对用户不同需求而开发的,包括记忆曲线、藏地旅游小知识、藏地风俗小知识等.针对部分藏汉学习需求的用户,词典小知识提供了记忆曲线;针对赴往藏地旅客,该系统提供的是藏地旅游小知识等.也有提高用户学习藏语的兴趣、增加对藏地了解的作用.这也是本款应用软件体现个性化设计的一部分[7].
2.3基于SQLite数据库设计
SQLite是一款轻型的数据库,它是遵守ACID的关系型数据库管理系统,包含在一个相对小的C程序库中.它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用.它占用资源非常的低,只需要非常少量的内存.它能够支持Windows/Linux/Unix等主流的操作系统,同时能够结合很多程序语言,比如C#、PHP、Java等,还有ODBC接口.不像常见的客户端/服务器结构范例.SQLite引擎不是程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接API调用,这在消耗总量、延迟时间和整体简单性上有积极的作用.整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中.这种简单的设计是在通过开始一个事务的时候锁定整个数据文件而完成的.
1) 词库用于存储生词的各项属性信息,包括单词ID、单词、单词释义三部分.该系统内容简单,能够大大提高查询速度.
2) 单词本数据库因不需要方便单词查询,只用于记录单词信息,所以只有一张数据表,整体设计类似于词库数据库,具体如表1所示[8].
表1藏汉词库数据库
表3 单词本数据库
3)用来存储简单的配置信息,采用Sharedpreferences存储再好不过.尽管在此版本Sharedpreferences中只存储是否为第一次使用的信息,定义Boolean变量first,初始化时first = true. 第一次进入应用首页MainActivity时,首先判断first是否为true,若为真则先显示使用指南,用户手动跳过使用指南后再进入应用首页,并且此时改变first值为false. 之后每次进入首页,因为判断结果first = false,就不会再显示使用指南,用户可直接使用应用功能.
4) 用File存储词库txt版本.由于部分用户手机没有藏文输入法,在查询单词时有很多不便,所以应用提供一份txt版的词库,供用户查阅.
表4txt词库
3 系统详细设计
本文主要介绍客户端的详细设计和实现.根据系统框架设计,对客户端在Android平台上的设计实现方法和技术手段进行详细的阐述,主要是从用户UI设计与实现、功能模块的设计与实现这两个方面来进行阐述[9].
3.1用户界面及实现
界面设计是为了满足软件专业化标准的需求,主要工作是对软件的使用界面进行美化优化和规范化.设计的具体方面包括软件启动的封面设计、软件框架的设计、按钮的设计、面板的设计、菜单栏的设计等等.
3.1.1藏译汉界面
1) 进入藏汉词典应用软件默认会进入藏译汉的界面.
2) 菜单栏是用tabhost控件做的.菜单栏所显示的藏译汉、汉译藏、单词本、词典小知识是藏汉词典应用软件的四个功能模块,点击它们就会进入到对应的界面.
3) 菜单栏下方的输入框中可以输入藏文查询中文释义,右方的x可以清空输入框,最右方的放大镜图标点击就可查询单词.为了提高查询速度和方便管理词库,藏译汉和汉译藏功能对应的是两个不同的数据库,藏译汉界面对应的是藏汉词典数据库,输入藏文就可以得到详细的汉语释义,输入汉语不能得到藏文释义.
4) 输入框下边的是释义栏,使用fragment控件[4]做的,fragment + tab所能达到一样很好的效果,就是菜单栏不动,下边的界面是用不同类进行管理的.
5) 底部右边有一个下载藏汉词典按钮,这是为部分没有藏文输入法的用户所考虑的.
图5 藏译汉界面
目前所有藏文输入法都是在获取root权限后才能成功安装,但很大一部分用户对藏汉词典的需求是短暂性的,不愿意为此对手机造成损害,承担不享受售后服务的风险.点击此按钮,用户可以将txt格式的藏汉词典数据库下载,直接查阅词典数据.
图6汉译藏界面
3.1.2汉译藏界面
整个界面类似于藏译汉界面,在这里不再赘述.
3.1.3单词本界面
1) 进入单词本界面.若用户没有添加过单词,界面就会出现如图7所示的状态.
图7单词本界面
2)界面左侧有四个按钮:记忆藏语、记忆汉语、显示释义、清空单词本.点击记忆藏语按钮,单词本界面上的藏语会被隐藏,用户可根据汉语释义默写藏文.
3) 界面上每一个单词记录后方有一个x按钮,点击会清楚此条记录.其他记录会自动排序,如图7所示.
4) 界面下方下一页按钮,点击会显示下一页所有用户收藏的单词.
3.1.4退出程序
当用户点击手机返回按钮时,程序跳出“再按一次退出程序”提示语.如果用户继续进行软件的其他操作,这个没有影响,如果用户再按一次手机返回按钮,藏汉词典应用软件将会退出.
4 系统测试
系统开发平台为Eclipse + Android SDK,测试系统为Android 4.0,藏汉词典应用软件使用安卓开发模拟器、魅族MX2、华为C8815三款机器作为测试设备.根据客户端模块划分,对整个客户端功能进行用户界面测试、功能测试、集成测试,所有测试均经过多轮测试,以保软件开发成功.
4.1整体测试
1)下载apk,打开藏汉词典应用软件,进入使用指南页面,first()方法测试成功.
2) 点击使用指南页面的开始使用按钮,进入查询页面,使用指南按钮监听器方法成功,intent跳转页面成功.
3) 点击菜单栏进入汉译藏、单词本、词典小知识,界面均跳转正常且显示正确,tab + fragment实验成功.
4) 点击手机返回按钮,屏幕出现“再按一次退出程序”提示语,进行一次除点击返回按钮的其他操作,再点击手机返回按钮,屏幕仍出现提示语.继续点击手机返回按钮,程序退出.需要连续两次点击手机返回按钮才能退出程序,且点击一次会跳出提示,Exit()方法成功[10].
5 结论
本文设计了基于Android 平台的藏汉电子词典,提供了Android端藏汉词典开发所必需的部分理论知识,着重阐述了词典系统的开发与研究,主要包括系统的总体设计、详细设计和具体实现.最后,将词典系统 APP 在模拟器和真机中进行了演示运行.通过测试软件对系统的整体性能进行测试,系统整体运行性能良好,并达到了最初的整体设计要求.但是系统还是有不完善和需要改进的地方,还需在后期工作中进一步研发.
[1] 当增扎西.现代藏文辞书的发展[J].中国藏学,2011,(2):12-14.
[2] 陈斌.基于Android平台SQLite数据库技术在图书馆中的应用[J].电子世界,2013,(2):66-68.
[3] 刘祥楼.基于SQLite技术的汉语语音识别数据库的建立[J].科学技术与工程, 2011,(5):43-45.
[4] 李继文.基于Unicode编码的现代藏文排序系统的设计[D].青海师范大学,2013,(6):43-50.
[5] 钟小莉,谢旻旻. 藏文在word表格中排序的算法研究[J].计算机工程应用技术, 2010,(9):71-72.
[6] 春燕,许宁.藏文排序方法研究与拓展[J].西藏大学学报(自然科学版),2010,04.
[7] 赵志成.基于Android平台的维汉多媒体电子词典的设计与实现[D].新疆大学, 2013,(6):33-34.
[8] 徐芬芬.基于Android的单词学习系统设计与实现[D].华东师范大学,2013,(6):31-56.
[9] 王佳顼.基于Android的电子词典手机客户端的设计与实现[D].北京交通大学, 2012,(6):31-60.
[10]黄艺锋,闫巧.基于Android平台电子词典的设计与实现[J].计算机应用,2011,12:35-37.
��用SQLite数据库存储词库、单词本数据,使用Sharedp
记录是否是第一次登陆系统.
2016-05-20
国家自然基金项目(61662065); 新丝绸之路经济带校级规划项目(xsczl201605).
普措才仁(1966—),男(藏族),青海榆树人,教授,主要从事智能信息处理技术及数据挖掘方面的研究.
TP319
A
1009-2102(2016)02-0017-08