基于Android平台的手机电子书阅读器的设计与实现.docx
《基于Android平台的手机电子书阅读器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android平台的手机电子书阅读器的设计与实现.docx(52页珍藏版)》请在冰点文库上搜索。
基于Android平台的手机电子书阅读器的设计与实现
毕业设计
基于Android平台的手机电子书阅读器的设计与实现
附外文文献及中文翻译
摘要
在这个信息化的时代,计算机越来越精致,手机也越来越智能化,所以,一个较好的应用软件在很大程度上能提升一个手机的品牌。
而在智能手机上安装一个拥有丰富功能支持的电子书阅读器,更是我们刻不容缓的事情。
本设计采用Android平台,根据对手机电子书阅读器的客户需求分析和技术可行性分析,经过总体设计和详细设计编码测试等阶段,完成了电子书阅读器软件的设计。
不仅实现了电子书阅读器最基本的阅读功能,而且还为用户提供了丰富的功能支持,包括找书,书签,自动翻页以及阅读界面设置的操作。
而本次设计最大的特点则是通过屏幕触控实现了移动时的翻页特效。
经过不断的测试与完善,电子书阅读器功能稳定,并且在真机上对其进行了测试与验证,基本上达到了用户的需求标准。
关键词:
Android;电子书阅读器;屏幕触控;翻页;
Abstract
Inthetimeofinformationtechnology,withtheincreasinglysophisticatedofcomputersandmoreandmoreintelligentofmobilephones,abetterapplicationsoftwarecanenhanceabrandofthephonetolargeextent.Itisoururgentforusthatinstalledonthesmart-phonehasarichfunctionalitytosupportthee-bookreader.
Basedontheneedsanalysisofcustomersandtechnicalfeasibilityanalysis,IusetheAndroidplatformtoachievethedesignofmobilephone’se-bookreader.Aftercompletingtheoveralldesignanddetaileddesigncodingtestingstage,Iachievedthedesignofthee-bookreadersoftware.NotonlycanthesoftachievethebasicfunctionofE-bookreader,butalsooffermanyotherfunctionsforusers,includingbooksandbookmarks,flippingpagesautomaticallyanddesigningthereader.ThesignificantcharacterofthedesignachievetheflippingpageofmobilebytouchingscreenThroughcontinuoustestingandimprovement,E-bookreaderisstable.Thetestingandverificationinrealdevicehascarriedouttomeetthecustomers’requirementswhichhavereachedthestandardsofthecustomers’requirements.
Keywords:
Android;e-bookReader;TouchScreen;Flip
第1章前言
1.1课题提出的背景目的及意义
1.1.1课题提出的背景
在这个信息化的时代,IT业已经成为世界发展的主流,我们对信息技术的依赖远远超过了对我们自己的依赖,计算机和手机已经成为我们日常生活中不可缺少的获得信息的渠道。
正因为如此,各种各样的软件层出不穷,我们的生活也因为各种各样的软件变的更有滋有味。
不缺乏娱乐性,也不缺乏教育意义,让我们从这些软件中受益匪浅,使我们看到了相比以前的巨大进步。
同时,随着科技的发展,计算机越来越精致,手机也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。
手机也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。
一个好的软件,能够标志一个手机品牌的地位。
所以,开发一款好的手机软件是相当必要的。
以前我们看看杂志,小说都要去图书馆借阅,而且时间有限,很不方便;而现在是在电脑上或者手机上看杂志,看小说,文档。
以此看来,一个好的手机阅读器软件的开发是相当有必要的。
1.1.2课题提出的目的
此次设计的目的很明显,就是给予阅读者更大的便利性,阅读者不用再到处拿着一本厚厚的书籍,大大减少了读者的负担,只需要下载一本txt格式的电子书,放在sd卡里边,就是人们的生活百科。
当然,有些下载不来的资料,还是需要翻阅书籍的。
1.1.3课题提出的意义
计算机改变了人类的工作方式,互联网创造着全新的生活空间,我们接受信息的方式也正在发生深刻的质变。
由于现在阅读器的越来越普及,我们每天清晨读报的习惯也在面对大资讯量的新闻网站时渐渐淡化,面对印刷出版物,我们仍视之为文化传承的载体,但不可抵挡的,是无纸化电子阅读时代的悄然临近。
我们现在信息化的生活,充斥着信息的传递,但是,越来越多的人依赖于几乎朝夕相伴的手机。
虽然,现在也出现了供人们阅读使用的电子书,但是这些电子书的功能很少很简单,仅仅是简简单单的供人们一行一行的阅览文字信息,或者是仅仅添加一个添加书签的小功能,根本远远不能满足人们的需求。
于是,一个功能良好的全面的电子书阅读器越来越成为广大用户的追求。
本软件是基于android系统智能手机开发的一款电子书阅读器软件,它有一个阅读主界面,主要用来阅读文档。
其优越性表现在实现了从SD卡读取文档或从服务器端下载文档,自动翻页,添加书签,选择书签,清空书签,设置背景音乐,设置背景图片,设置字体颜色,设置字体大小等功能。
此外,给用户更清晰方便的界面,也是本软件的出发点之一。
1.2设计思路及研究方法
1.2.1设计思路
阅读器的设计流程主要是按照软件设计的一般流程:
需求分析、概要设计、详细设计、测试与维护的基本流程来设计开发的。
首先,从整体分析软件功能,将功能模块化;然后对每个模块进行调试。
最后对各个模块进行系统集成。
通过几个月的观察,发现几乎所有的人都有手机,而且几乎有一半以上的人用手机来阅读资料。
可是这些阅读软件不尽人意,而且一个好的阅读软件也还没有安装在智能手机上。
本系统针对这一点进行了较仔细的分析,在老版的阅读软件基础之上进行改进,最后,对系统进行了实现和维护。
1.2.2研究方法
本系统在整体框架研究方法采用的是问卷调查法和观察研究法。
而在总体设计上采用的是结构化方法,在局部底层开发上为便于交流采用快速原型法。
问卷调查法也称问卷法,它是调查者运用统一设计的问卷向被选取的调查对象了解情况或征询意见的调查方法。
观察研究法指根据既定的研究目的,对现象或行为做有计划与有系统的观察,并依观察的记录对现象或行为做客观性的描述和解释。
结构化系统的设计方法是在结构化程序设计思想基础上发展起来的,它的基本涵义是一个系统由层次化的程序模块构成,每一个模块只有一个入口和一个出口,每一个模块只归其上一级模块调用,并有模块连接的准则和构造模块的标准,而且用系统结构图来表达系统的结构,尽可能用最优的方式将系统内各部分组织起来。
第2章需求分析
2.1软件的基本功能要求
经过以上问卷调查和观察研究方法,在现行业务流程和数据分析的基础上基本上确定了系统的功能,设计也基本上达到了目标。
根据软件设计的步骤,需求分析是软件设计成功的基础,也是必不可少的步骤。
同时,也对软件的设计提出了具体的要求。
在做足了充分的调查研究之后,基本可以确定软件的功能界面如下:
(1)刚打开软件时的欢迎动画界面。
(2)在没有阅读记录情况下打开软件时进入的软件说明界面。
(3)在主界面下单击“菜单”按钮后弹出的欢迎主菜单界面。
(4)找书选择界面,用来选择找书的途径。
(5)网络下载列表界面,用来列出服务器端可供下载的文档。
(6)下载完成提示界面,用户从服务器端完成指定文档下载任务时显示的界面。
(7)已存在要下载文件提示界面,当用户指定要下载的文档在SD卡中已存在时显示的界面。
(8)SD卡文件列表界面,列出SD卡中存在的所有资料。
(9)阅读界面,用来阅读文档的主界面,是整个阅读器设计核心部分。
(10)书签功能界面,用来选择与书签相关的具体操作。
(11)添加书签功能界面,将当前阅读到的位置以书签名和书页号的形式存至书签表,
方便下次阅读。
(12)选择书签功能界面,通过选择书签记录跳转至想要阅读的位置。
(13)删除书签功能界面,再不想要该条书签记录的情况下实现删除操作。
(14)自动翻页功能界面,实现不同时间间隔自动翻页的效果。
(15)设置界面,用来选择对阅读界面不同的设置。
(16)背景音乐界面,可在阅读的同时欣赏音乐,更大限度的提升。
(17)背景图片界面,用来设置不同的阅读界面风格,使阅读更为个性化。
(18)字体颜色界面,用来设置不同的阅读字体颜色,提升用户的视觉体验。
(19)字体大小界面,通过设置字体大小来满足实际应用中的多重需求。
基本说明如下:
本系统是一个电子书阅读器,主要包含一个主界面,用来实现阅读的功能。
在阅读界面时,点击menu,手机底部会出现四个选项:
找书、书签、自动翻页、设置。
点击找书选项会有两种操作可供选择,分别是在SD卡中找书和通过网络下载;点击书签选项会有三种操作可供选择,分别为添加书签、选择书签和清空书签,其中长按选择书签列表中的某条书签记录也可达到删除该条记录的目的;点击自动翻页选项会有四种操作可供选择,分别为每隔30秒、40秒、50秒自动翻页和停止自动翻页;点击设置选项会有四种操作可供选择,分别为设置背景音乐、设置背景图片、设置字体颜色和设置字体大小,为此用户可通过自己的喜好来设置不同阅读界面的风格,并且可以选择自己喜爱的音乐作为背景音乐,在阅读的同时欣赏。
2.2系统架构
本设计总体逻辑结构层次划分如图2.1所示。
图2.1功能结构图
2.3开发环境
Ø数据库
由于本设计和数据库密切相关,但是对数据库的要求不高,因此可用Android系统本身自带的Sqlite数据库。
ØAndroidSDK与Eclipse开发的插件ADT
由于本设计是基于Android系统的,而Android开发环境的搭建是基于Eclipse的,因此需要下载AndroidSDK与Eclipse开发的插件ADT。
Ø服务器
由于本设计需要用服务器来为其提供下载服务,而且对服务器的要求不高,因此在设计时用Tomcat作服务器。
第3章软件设计
3.1总体软件结构设计
打开电子书阅读器之后,软件会先查看上次阅读的最后记录,以此作为根据来进行判断从而跳转至相应的阅读界面。
然后用户就可在阅读界面下通过选择menu来执行想要的操作:
找书、书签、自动翻页、设置。
点击找书选项会有两种操作可供选择,分别是在SD卡中找书和通过网络下载;点击书签选项会有三种操作可供选择,分别为添加书签、选择书签和清空书签,其中长按选择书签列表中的某条书签记录也可达到删除该条记录的目的;点击自动翻页选项会有四种操作可供选择,分别为每隔30秒、40秒、50秒自动翻页和停止自动翻页;点击设置选项会有四种操作可供选择,分别为设置背景音乐、设置背景图片、设置字体颜色和设置字体大小,为此用户可通过自己的喜好来设置不同阅读界面的风格,并且可以选择自己喜爱的音乐作为背景音乐,在阅读的同时欣赏。
根据各个模块的不同功能,对本设计进行了层次结构的划分。
在Eclipse下创建了一个名为Test的工程,工程的结构图如图3.1:
图3.1软件工程结构图
该功能包是通过AndroidSDK自动生成的,主要包括以下内容:
(1)src源代码目录:
该目录存放Android应用程序所有的源代码。
该目录项有不同的包,包中对应开发的源代码,开发过程中的主要精力都集中在开发src目录下内容。
(2)gen文件夹目录:
该目录存放了Eclipse的ADT插件自动生成的R.java文件。
实际上R.java定义了一个R类,它包含了应用中用户界面、图像、字符串等各种资源与之相对应的资源编号(id)。
这些资源编号都是系统自动生成的,即有一资源对象,系统就为此在R类中生成相应资源编号,好比一本字典。
(3)Res资源目录:
该目录定义了drawable、layout及values3个目录。
a.drawable目录:
该目录下有drawable-hdpi,drawable-ldpi,drawable-mdpi3个文件夹,分别用来存放不同分辨率的图片资源,用于不同分辨率的手机的开发,可以通过Resource.getDrawable(id)获得该资源。
b.layout目录:
该目录下包含了所有使用XML格式的界面描述文件。
主要用于表述应用程序的用户界面布局,也用于描述用户界面和接口组件。
c.values目录:
该目录包含了使用XML格式的参数描述文件,也可以在此添加一些额外的资源,如字符串、颜色、样式和数组等。
主要用于在代码中通过R类来调用它们,而不直接使用,这样可将代码和资源分开管理,便于维护。
除了以上文件夹外,还用一个AndroidManifest.xml文件,该文件是系统的控制文件,告诉系统如何处理创建的所有顶层项目,尤其是Activity,凡是需要用到的组件都要在此注册。
同时该文件也是所有Android应用程序都需要的文件,其描述了程序包的全局变量,包括公开的应用程序组件和每个组件的实现类,什么样的数据可以操作,在什么地方可以运行等。
在这个文件中最重要的一个内容就是Intent过滤器,这些过滤器描述了何时、何种情况下让Activity启动。
当一个Activity(或操作系统)想要执行一个动作,它将创建一个Intent对象。
该对象包含了很多描述符,描述了想做的操作,像处理数据,数据的类型,以及一些其他的信息。
Android将Intent对象中的所有公开的Intent过滤器比较,找到一个最能恰当处理请求的数据和动作的Activity。
3.2接口设计
3.2.1外部接口
在用户界面部分,根据需求分析结果,用户需要一个友善界面。
在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。
在界面设计部分,本系统按照Microsoft公司的用户界面设计标准,为用户提供友好、方便、直观、简洁的操作环境。
本系统采用了窗口继承的方式,使窗口有统一的界面风格。
同时,对错误信息、提示信息进行标准化,尽量做到清晰明了。
3.2.2内部接口
系统在功能模块的设计上,以“高内聚、低耦合”为设计目标。
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。
具体参数的结构将在下面数据结构设计的内容中说明。
接口传递的信息将是以数据结构封装的数据、参数传递或返回值的形式在各模块间传递。
3.3数据库设计
3.3.1数据模式设计
一共设计了3张表,是:
(1)阅读记录表(阅读记录的ID,书的路径,阅读记录数据)
(2)书签表(书签的ID,书签对应的阅读记录的ID,书签名,书页)
(3)上次阅读记录表(上次阅读记录的ID,书的路径,上次阅读到的书页,上次阅读时的字体)
数据库表的设计如下:
图3.2数据库结构图
3.3.2数据表格设计
本数据库用的是一个小型数据库sqlite3,在数据库中创建了三个表格。
即BookRecord、BookMark和LastTimePage,分别用来存放阅读记录的数据、书签的数据和上次的阅读记录数据。
具体内容如表3-1、表3-2和表3-3所示:
表3-1阅读记录表
字段名称
数据类型
字段大小
是否主键
说明
rid
Integer
8
是
阅读记录的ID
path
文本
50
否
书的路径
data
字节数组
不定
否
预读记录数据
表3-2书签表
字段名称
数据类型
字段大小
是否主键
说明
mid
Integer
8
是
书签的ID
ridfk
Integer
8
否
书签对应的阅读记录的ID
bmname
文本
50
否
书签名
page
Integer
8
否
书页
表3-3上次阅读记录表
字段名称
数据类型
字段大小
是否主键
说明
lid
Integer
8
是
上次阅读的记录ID
path
文本
50
否
书的路径
page
Integer
8
否
上次阅读到的页数
fontsize
Integer
8
否
上次阅读的字体大小
3.3.3表的具体设计
表名:
BookRecord
表中字段名称:
rid,path,data.
说明:
用varchar类型存储path,blob类型存储相应的路径下的阅读过程,并规定rid为阅读记录表的主键。
表名:
BookMark
表中字段名称:
mid,ridfk,bmname,page.
说明:
创建书签mid为integer类型主键,定义书签名字bmname为varchar类型,书页号page为integer类型的书签表。
表名:
LastTimePage
表中字段名称:
lid,path,page,fontsize.
说明:
创建书签lid为integer型主键,定义路径path为varchar类型,书页号page为integer类型,字体大小为integer类型的上次阅读记录表。
3.3.4数据字典
数据字典是物理数据库的具体体现。
表3-4BookRecord数据字典
字段名
类型
阅读记录的ID
整型
书的路径
文本
阅读记录数据
字节数组
表3-5BookMark数据字典
字段名
类型
书签的ID
整型
书签对应的阅读记录的ID
整型
书签名
文本
书页
整型
表3-6LastTimePage数据字典
字段名
类型
上次阅读记录的ID
整型
书的路径
文本
上次阅读到的页数
整型
上次阅读时字体大小
整型
3.4软件设计模型
建立系统数据模型的主要工具是实体——关联图,即E-R图。
E-R图的图形符号约定如下表:
表3-7E-R图图形符号
图3.3存储阅读记录的E-R图
图3.4存储书签的E-R图
图3.5存储上次阅读记录的E-R图
3.5代码设计
代码是按使用的目的,表示识别、分类、排序数据的数字、文字或符号。
识别是将文件中存储数据区别开,或将文件中的数据按组区别开,识别主要用数据更新与查找。
分类是根据数据编码中的定义对数据分类,用于检索数据或统计分析。
排序是根据编码规则,按代码中规定的次序排序,用于输出与生成报表。
3.6软件维护设计
采用MVC设计模式,将UI层和业务逻辑层分离开来,采用针对接口编程的方式,降低了代码之间的耦合度,便于软件的升级和程序性能的优化。
第4章系统功能模块的设计与实现
4.1关键技术
4.1.1android平台及java语言
以下图表展示了Android操作系统的主要组成部分:
图4.1Android系统架构图
本系统是以java为编程语言,从接口到功能,灵活多变。
主要运用的是Activity之间的相互跳转,然后利用Intent实现多个程序同时运行的效果。
运行中如果某个Activity的画面被另一个Activity所取代,则这个Activity停止。
本系统通过把View类与XML(可扩展标记语言)将用户界面放置在视图窗口,然后注册事件来完成相应的功能。
例如,当视图要处理用户的点击事件的时候,android就要向框架注册一个OnClickListener等。
本系统中触发事件都是通过这种来实现的。
Java语言是一种简单易用,面向对象的,可移植的语言。
它具有很多的优越性和特点,比如:
平台无关性,安全性,面向对象,健壮性等等。
本系统就是在android平台上使用java语言完成的系统。
4.1.2中介软件
中介软件是android操作系统应用程序的桥梁,主要分为函数和虚拟机。
Android的数据存储采用sqlite3数据库系统,用户可以用ContentProvider类获取数据。
android中数据存储技术主要有:
文件存储、preference、sqlite、ContentProvider和网络存储,在本软件中主要使用到了文件存储、sqlite和ContentProvider,文件存储是以流的形式读写文件,可以以文格的格式,也可以以二进制的形式,在java语言中要使用流,则写入文件的对象必须进行序列化,sqlite是嵌入式移动设备中常用的轻量级数据库,可看作计算机上使用的sqlserver、oracle数据库。
本软件中,用户生词本中的数据都存在sqlite数据库中,而进行数据备份和恢复时则是用文件作为介质保存数据。
4.1.3四大组件
Android的四大组件是支持android应用程序显示,跳转,服务和事件的重要工具,它们主要是:
Activity(活动),Intent(意图),Service(服务),ContentProvider(内容提供器)。
Activity是一个用户的界面基类,属于UI。
一个Activity就是一个类,每个Activity类都需要继承Activity基类,并与其他控件结合使用。
Intent实现Activity、service等之间的跳转和数据传输。
Service是后台服务,为用户提供数据支持。
ContentProvider负责数据的存储和读取。
在android中,软件UI通常使用xml技术设计,而xml中控年的位置和状态则离不开布局的使用,android中常用的布局有5种,分别是:
AbsoluteLayout、LinearLayout、RelativeLayout、FrameLayout、TableLayout,由于布局的使用,并且布局之间可以互相嵌套,使得android软件UI的设计变得非常灵活,即使是一些非常复杂的界面设计,只要合理的使用布局,也会使开发变得很容易。
4.1.4sqlite3数据库
Sqlite3是建立在android平台上的一个数据库,除了支持varchar(n)(可变字符),
char(n)(定长字符)等数据特性外,还支持空(NULL),整型(INTEGER),文本类型(TEXT)等数据类型。
它的特点入下:
轻量级(只需带上很小的动态库,就能享受它的全部功能)、独立性(使用不需要安装,在部署的时候能省去很多麻烦)、隔离性(数据库中所有的信息都包含在一个文件内,方便管理和维护)和安全性(可以同时读取数据,但同时只有一个能够写入数据)等特性。
4.1.5Tomcat服务器
服务器的架设:
(1)在http:
//tomcat.apache.org/下载合适版本的Tomcat。
(2)在/apache-tom