基于Android系统平台设计和实现电子书阅读应用,优秀专业论文
下面是小编为大家整理的基于Android系统平台设计和实现电子书阅读应用,优秀专业论文,供大家参考。
于 基于 Android 系统平台设计和实现电子书的阅读应用
摘要:首先对 Android 系统进行深入的分析和研究,与传统操作系统进行比较,突出 Android 系统优势和应用前景。然后,基于 Android 系统平台设计和实现电子书阅读应用,论文对其关键技术进行分析,提出优化解决方案,改变传统文本显示方式,将图像和文字有机结合在移动设备界面显示。
关键词:
Android;电子书;SQLite 数据库
Design and implementation of e-book reading application based on Android platform Abstract:
First, the Android system, in-depth analysis and research, compared with the traditional operating system, highlighting the advantages of the Android system and application prospects. Then, based on the Android platform design and implementation of e-book reading application, the paper analyzes its key technologies, optimization solutions put forward to change the traditional text display, the combination of images and text displayed on a mobile device interface.
Keywords: Android; books; SQLite database 中图分类号:TP 311.5 0. 引言 目前, 网络在线阅读和手机阅读已经成为人们两大新型阅读方式。电脑和手机移动设备成为主要的媒介,但是电脑体积大,重量沉,不能成为优秀的移动阅读终端。手机电子书阅读器成为发展趋势。作为智能手机的先锋 Android 系统,用户希望其提供尽可能多,尽可能实用的功能。电子书阅读器就是其中之一。
传统的手机电子书阅读器只能读取规定格式文本,如 TXT、CHM、JAR 等,用户在电子资源选择方面受到约束,同时电子书缺乏图像显示,单一枯燥。用户希望在 Android 系统上获得一款更加灵活、生动、高效的电子书阅读器。
1 Android 简介和 与传统操作系统的 比较研究 Google 公司于 2007 年 11 月推出开源手机操作系统 Android,该平台由操作系统、中间件、用户界面和应用软件组成 [1] 。它的推出解决了移动终端封闭的劣势,是目前行业中首个完整、开放、免费、高质量的手机操作系统。它不仅是一
个移动设备操作系统,更是一个开源的体系架构。其开放了基于 Linux 内核以上的开发工具,保证了系统的可移植性和多样性 [2] 。
Android 系统包含以下重要特性 [3] :
应用程序框架:支持组件的重用与替换。
Dalvik 虚拟机:为移动设备进行优化。
内部集成浏览器:该浏览器基于开源的 WebKit 引擎。
优化的图形库:包括 2D 和 3D 图形库,3D 图形库基于 OpenGL ES 1.0。
SQLite 数据库:完成结构化的数据存储。
多媒体支持:包括常见的音频、视频和静态印象文件格式。
丰富的开发环境:包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse 集成开发环境插件。
当前主要的手机系统包括:iPhone, Symbian,Windows Mobile, BlackBerry,Android 等,它们各有特点。下面表1 将就系统内核、应用开发语言、系统浏览器、后台、系统开源性、系统优势和劣势等方面进行比较。
表1 手机操作系统的特点
iPhone Symbian Windows Mobile BlackBerry Android 系统内核 Darwin (Mach/BSD)
Symbian OS Windows CE Proprietary BB OS Linux
应用开发语言 Objective-C C++ C/C++ JAVA JAVA 浏览器 Safari浏览器 第三方浏览器 IE 浏览器 第三方浏览器 WebKit 浏览器 后台运行 否 可以 可以 可以 可以 系统开源 否 否 否 否 是 优势 系统成熟稳定,界面友好,简单灵动。功能设计越来越丰富。光、红外、加速度、湿度感应更加人性化。
实时性、多任务的纯 32位操作系统,功耗低、占用内存少,适合移动设备。标准化的开放平台,系统能力和易用性突出。
界面友好,易于掌握,信息资料可以和PC 机共享,应用软件资源丰富。
支持多任务处理,宽大的屏幕和便于输入的QWERTY键盘。
界面友好,具备触摸屏、高级图形显示和上网功能,支持网络应用,可以无缝接入Google应用和第三方软件。
劣势 系统占用存储空间大。不支持第三方软件,缺乏商务功能,技术水平需提高。
对主流的媒体格式的支持性较差,存在软件兼容性和证书问题。
Windows CE占用大量系统资源。容易产生系统瘫痪。
在多媒体播放方面的功能不足。
网络安全性欠缺,不支持中文。
由表 1 可知,传统流行的手机操作系统缺乏开放性,不能很好的满足市场的需求。Android 是基于 linux 内核的开源操作系统,架构简洁,为开发低成本、
个性化的手机应用提供了平台,市场发展前景看好 [4] 。
2 系统需求分析 1)Android系统手机客户端:
获得电子资源可以通过SD卡拷贝,也可以通过网络下载来获得电子书目录和数据文件包。在需要连接网络下载电子书时,用户要登录进行身份验证。用户成功登录后,在应用程序中显示网络电子书首页面,选中书名或类型名进入相应电子书列表。在电子书列表中,选中某一本电子书,查看书籍简介确定是否要下载该书,点击下载电子书。用户也可以根据书名、作者等信息进行书籍查询。电子书数据中,包括图片(jpg,bmp等格式)和文字(txt格式),将图片和文字结合,分页显示。在本地阅读电子书时,可以按照书名查询本地电子书。在网络下载中,可以根据书名查询网络电子书。手机客户端需求如用例图1。
图 1 Android 客户端用例图 2) Web 服务器端 管理员通过PC机登录系统,进行身份验证。管理员成功登录后,可以对个人信息进行变更;对注册成功的网络用户,进行监督和支持。显示用户名、电话号码、注册时间、下载次数等信息。对于日志中出现问题的用户,进行禁用和解禁操作。可以上传电子书,填写电子书基本信息;修改电子书信息,删除电子书信息和文件等。电子书存储于绝对路径硬盘上,与数据库分离,保证数据安全性。服务器用例图如图2。
图 2 Web 服务器端用例图 2 系统架构设计 本系统分为两部分(图3),一部分Android手机客户端与服务器交互(C/S架构),另一部分Browser浏览器端与服务器交互(B/S架构)。所以在系统整体设计上采用两种架构相结合的方式——扩展化的B/S架构。
图 3 系统网络框架图 系统的客户端定位于Android手机平台。采用HTTP作为通讯协议,JSON为数据传输格式。根据应用活动都运行于主线程的特点,采用多线程技术来解决系统通讯和响应等待的问题。针对通信安全的问题,将MD5数据加密算法引入到Android应用系统平台,对系统敏感信息进行加密和解密处理。系统的电子书基本信息和电子书分页信息都保存在SQLite数据库里,电子书图片和文字文件存储在Android平台虚拟存储设备sdcard中。
系统的客户端分为五大模块进行设计开发:
1.通讯模块:负责与服务器建立通讯。发送客户端请求和接受服务器信息响应和数据传输。
2.解析模块:主要用来解析电子书数据流,根据解析元素的不同类型封装成不同的数据对象,组成相应的电子书样式设计和图文内容。
3.加解密模块:负责对用户个人信息进行加密、解密,确保通讯数据的安全。
4.数据模块:定义了整个客户端中大部分的数据类型和对象实体。
5.应用模块:主要实现是客户端和用户交流的接口、用户界面、活动等。应用模块又分为几大功能,包括电子书下载,阅读,管理和用户账户管理。
Android移动终端模块设计如图4所示。
图 4 电子书系统客户端模块设计图 4 系统具体设计与实现 4.1 Android 客户端设计和实现 电子书阅读系统中手机移动终端主要实现电子书请求,下载,保存、本地显示和管理功能,在无线网络通信中保证数据传输的安全性和稳定性。
根据 Android 终端模块化分析和设计,系统开发采用 Eclipse 平台,添加Android 开发 ADT 插件,创建 Android 工程以及测试模拟器。Android 工程下主要有 src、gen、assets、res 等文件夹。src 文件夹存放 java 源代码,实现程序功能;gen 文件夹存放编译器生成文件,采用系统自动维护方式;assets 文件夹存放发布所需文件,支撑系统发布;res 文件夹存放系统资源文件,其中分为三类,图像文件存储在 drawable 文件夹下;程序界面布局存储在 layout 文件夹下;界面中文文字、属性值存储在 values 文件夹下。工程依赖 AndroidManifest.xml 文件完成系统配置,并在 default.properties 文件中记录系统信息。
针对 Android 平台电子书系统,在 e-bookClient 工程中对 java 源码按功能不同划分为五个文件夹,存放对应功能模块源码,提高系统安全性和易维护性(图
5)。
图 5 Android 客户端开发结构图
e-bookClient 工程五个模块文件夹为应用模块、控制模块、数据库、文件工具、系统工具。系统用户信息和电子书信息保存在 SQLite 数据库中。电子书资源保存在 SD 卡中,对应 Android 平台虚拟文件存储设备 sdcard。
Android 平台电子书系统控制模块分为四个部分:解析模块、加解密模块、数据模块和通信模块。
1.通讯模块:负责与服务器建立通讯。发送客户端请求和接受服务器信息响应和数据传输。
2.解析模块:主要用来解析电子书数据流,根据解析元素的不同类型封装成不同的数据对象,组成相应的电子书样式设计和图文内容。
3.加解密模块:负责对用户个人信息进行加密、解密,采用传统 MD5 方法进行设计和实现,确保通讯数据的安全。
4.数据模块:定义了整个客户端中大部分的数据类型和对象实体,以系统工具类进行数据过滤封装和处理,为其他模块调用提供接口和服务。
(一)解析模块 对于客户端接收到的电子书 Zip 压缩包,系统需要提供解析,并调用 Android平台控件实现电子书显示和控制。Android电子书格式设计集合了HTML和XML的优点,易于理解,阅读和编写,实现轻量级传输。工程架构中解析模块实现电子书解析,界面框架生成功能。
在用户第一次请求阅读电子书时,将 Zip 格式电子书解压缩生成相应名保存在 sd 存储卡中,降低系统重复工作量。同时将压缩包硬件删除,节省存储卡和内存空间。读取电子书文件夹中文本文档,进行显示编译。将文本文件写入文件流,读取文件流,对标签元素进行解析,并对标签属性进行设置,对于属性值和控件属性值类型不同情况,根据约定进行转换和验证。
工程实现功能函数 onCreateLayout()、onCreateText()、onCreateImage()、onCreateNote()等,函数中创建 Android 平台适用的控件,对<Layout>、<Text>、<Image>、<!-- --!>等标签进行逐一的解析。
下面对解析函数和方法进行说明。
将 txt 文本写入到缓存,以 StringBuffer 变量存储和调用,然后创建字符变量对 StringBuffer 进行遍历和解析。
读入标签开始字符为”<”时,从字符串下一个字节开始查找”>”标签结束符,如果遇到结束符,则将开始符和结束符之间的字符串保存,并对其进行深入解析。将此字符串以空格分离,并将每个字符串存入字符数组,对字符数组进行遍历。如果字符数组第一个值为“Layout”表明此标签为布局设计,调用onCreateLayout()方法,将字符串数组作为参数。如果字符串数组第一个值为“Text”表明此标签为文本标签,调用 onCreateText()方法,将该数组作为参数,对每个值进行解析。
同理,对于第一个值为“Image”的字符串数组,调用 onCreateImage()方法进行解析。
模块开发中主要解决两方面问题。一方面是图像嵌入电子书显示,另一方面是电子书图文数据进行分页和显示,这两方面又是相互关联的。
首先,基于图片和文本的结构关系,考虑到无线网络传输速率,图片为小容量图片,将图片为设计为独立组件<ImageView>添加至电子书布局中,保证了图像的完整性和独立性。根据文本位置和界面布局,计算出图片显示位置,实现图片和文件的多种拼接方式(如紧密环绕型、换行连接型等)。
其次,通过系统参数获得屏幕尺寸和分辨率,当电子书一页被填充满后,保存最近的组件参数,页码计数器加一,创建电子书新一页,并以保存的电子书组件参数,继续添加文本文字和图像。最后将页面计数器数值和该电子书基本信息一同保存在 SQLite 数据库中。
(二)通信模块 通讯模块主要实现客户端请求的发送和接受。Android 电子书客户端将数据请求和客户端信息添加至 JSonObject,并以输出流方式发送给服务器。当服务器接收处理后,返回数据流包含结果 JSon 字符串。服务器发送电子书 Zip 包,Android 客户端在接受到 Zip 包后,解压缩保存到文件系统中。
String filePath="/sdcard/"+bName; ZipInputStream zis = new ZipInputStream(conn1.getInputStream());
ZipEntry entry; if(zis.available()==1) {
File dFile=new File(filePath);
if(dFile.exists()) { String[] fileList= dFile.list(); int num=delete(filePath,fileList); if(num==0) dFile.delete();
}
dFile.mkdir();
while ((entry = zis.getNextEntry()) != null)
{
String entryPath=filePath+"/"+entry.getName();
Convert convertRes = new Convert();
byte[] buf = convertRes.getData(zis);
File file=new File(entryPath);
file.createNewFile();
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(file));
bos.write(buf);
bos.close();
}
}
return filePath;
在Android系统中,采用JAVA语言开发,引用Java 标准HTTP类库和方法。Android电子书系统将下载信息封装成JSON对象,传给Http属性。
URL URL=new URL ("http://localhost:8080/.........