基于Android的电子书阅读器设计与实现

 2022-03-09 08:03

论文总字数:12860字

毕业设计软硬件使用说明文档

题 目 基于Andorid的电子书阅读器

设计与实现

计算机科学与工程 院(系)计算机科学与技术 专业

学 号 09012414

学生姓名 李文博

指导教师 杨鹏

起止日期 2016.1.26 至 2016.5.24

设计地点 东南大学计算机科学与工程学院

第一章 开发环境配置

1.1 JDK安装配置

JDK,全称Java Development Kit,是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.htm

本文软件开发环境为JDK 1.8。

安装好之后,按如下要求配置系统环境变量:

  1. 新建JAVA_HOME变量,值为jdk根目录的变量;
  2. 修改Path变量,在值末尾处添加%JAVA_HOME%\bin;
  3. 新建ClassPath变量,值为.;%JAVA_HOME%\lib\tools.jar。

1.2 Eclipse及Android sdk、ndk安装配置

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

Eclipse下载地址:http://www.eclipse.org/downloads/

本文软件开发使用的Eclipse版本为4.5.2。

为了运行Android虚拟机,在安装好Eclipse和JDK之后,还要进行Android sdk、ndk的配置。配置流程如下:

  1. 配置SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

Android SDK管理工具下载地址:http://developer.android.com/sdk/index.htm

下载完成后,根据开发所需Android版本下载Android SDK。

图1-1 Android SDK 配置图

  1. 配置ADT:ADT(Android Development Tools)在Eclipse编译IDE环境中,需安装ADT(Android Developer Tools)插件,这是Android在Eclipse上的开发工具。配置过程如下:

启动Eclipse,点击 Help菜单 -gt; Install New Software… ,点击 Add… ,输入地址:http://dl-ssl.google.com/android/eclipse/。

图1-2 Eclipse ADT 配置图

  1. 配置NDK:为了允许用户使用类似C / C 之类的原生代码语言执行部分程序,需要安装NDK(Native Development Kit)。

NDK下载地址:http://developer.android.com/tools/sdk/ndk/index.htm

下载完成后,打开Eclipse,点Window-gt;Preferences-gt;Android-gt;NDK,设置NDK路径。

图1-3 Eclipse NDK 配置图

  1. 配置编译环境:JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是Camp;C )。编译环境配置如下:

右击项目工程,选择Properties,在Builder选项中,新建一个变量,取名为NDK_Builder。

图1-4 Eclipse NDK_Builder 配置图1

选择Build Options选项,按图4-5配置,点击Specify Resources,将编译空间设置为需要编译的工程下JNI文件。

图1-5 Eclipse NDK_Builder 配置图2

第二章 系统设计

2.1 系统流程图

开始

主界面

浏览文件夹

更改系统设置

书架

背光灯亮度

更改界面语言

白天夜间模式

选择书籍

阅读设置

管理书签

管理书籍

分类排序

退出

结束

选择书籍

图2-1系统流程图

当用户进入软件系统后,系统首先加载主界面。主界面上显示有文件浏览系统的入口。用户可以根据主界面提供的文件管理系统进入用户自己的文件夹,选择书籍文件打开阅读。如果是第二次加载主界面,书架功能会根据最近阅读历史记录,显示最近阅读过的书籍封面。用户可以直接通过书架选择书籍进入阅读。

在选择书籍后,用户进入阅读模式。阅读模式下,系统根据默认设置,设置默认字体格式、字号大小。用户可以根据自己的需求改变字体格式、字号大小。当用户改变阅读设置后,系统会根据更改后的设置重新绘制阅读界面,用户可以继续阅读。在阅读时,用户可以根据点击屏幕的左半区域与右半区域进行翻页。用户也可以通过滑动操作进行翻页。

当用户想要保存当前的阅读进度,等待下次阅读时,可以选择添加书签。系统将会根据当前阅读进度保存阅读位置。下一次进入阅读时,用户可以通过书签直接跳转到想要继续阅读的位置。用户也可以删除不需要的书签。

书籍管理系统为用户提供了管理书籍文件的功能。在书籍管理界面,用户可以修改书名、修改作者信息,以及删除书籍。当用户为多本书籍添加完作者信息后,用户可以根据作者名浏览书库文件,可以看到同一作者有哪些不同的作品。

在系统设置模块,用户可以根据偏好修改界面显示参数。第一次进入系统时,获取当前屏幕亮度作为默认亮度,默认语言为中文。下一次进入系统时,系统将会沿用上一次用户修改后的设置。为了提供更好的阅读体验,系统设置中提供了昼夜模式切换功能。夜间模式下,页面灯光显得更加柔和。

在完成阅读后,用户可以选择退出,或者从Android系统提供的进程管理接口中关闭本软件。系统将会记录下当前设置,并且下一次进入软件时,将会以上一次的设置为默认设置运行。

2.2 系统框架

本系统采用C/S模式框架进行设计。系统主要分为以下几大模块:文件管理模块、格式解析模块、阅读信息管理模块、显示模块、通讯模块等。

  1. 文件管理模块:主要用来管理系统中的文件。
  2. 格式解析模块:主要用来解析电子书数据,根据不同的格式类型将电子书封装成相应的数据对象。
  3. 阅读信息管理模块:主要负责管理用户的阅读信息,如阅读历史、翻页、书签管理等。
  4. 显示模块:主要是实现客户端和用户交流的接口,实现可视化用户界面等。

电子书系统模块设计图如图3-1所示。

控制模块

应用模块

图2-2 电子书系统模块设计图

2.3 系统功能模块

根据用户日常阅读习惯,表2-1对用户阅读小说的场景进行模拟,在场景中,标识出3种参与者,即用户、客户端、服务器。

表2-1 阅读小说场景模拟表

场景名称

阅读小说

参与者

User:用户,Client:客户端,Server:服务器

事件流

  1. User打开小说阅读器软件,Client调用默认的主界面显示功能,将主界面显示在手机屏幕上。
  2. User根据自己保存的小说文件位置,进入该文件,并选择想要阅读的小说。Client根据相应的操作向Server发送请求。
  3. Server接收请求,调用Android系统提供的文件管理接口进入文件系统,获取文件,根据小说文件类型调用相应的解析程序,并将结果封装发送到Client。
  4. Client接收结果,根据当前设置将小说呈现在手机屏幕上。
  5. 用户阅读小说。
  6. 用户退出阅读,Client记录此次阅读最后记录,将记录发送给Server。Server保存阅读记录。
  7. User开启下一次阅读时,将会自动从上次阅读退出的位置继续阅读。

C/S模式下,系统模块主要由客户端模块和服务器端模块两个模块构成。而在Android平台中,操作系统为软件提供了丰富的应用接口,因此传统意义上的服务器模块可视为控制模块,而传统意义上的客户端模块可视为应用模块。

图2-3 电子书系统用例图

控制模块并不直接面对用户,控制模块的主要功能是接收与解析前台发送过来的命令,调用相应的函数完成数据、内容、设置等更改,然后把结果返回给前端。而应用模块则直接面对用户,主要负责将后端返回的结果以图形化的形式显示在屏幕上,或者接收用户对手机的各种操作,并且将操作解读成各类命令,交给后端进行处理。

2.2.1 控制模块

控制模块主要实现服务器端各功能模块。即控制模块主要负责调用Android系统提供的各类接口,完成对不同格式的书籍的解析封装与对软件功能的控制。图2-4描述了控制模块所包含的主要功能模块。

图2-4 控制模块体系图

  1. 文件管理模块:文件管理模块实现的主要功能是对设备内文件的管理。通过调用系统提供的文件管理应用接口,能够从SDCard或者本地文件夹中读取符合一定规则的书籍文件。

系统访问文件时,首先获取路径。FileInfo根据设置的path值调用isDirectory(),判断底层路径名所对应的文件是否是文件夹。如果返回true,则判断当前路径所标识的文件是文件夹,调用returnArcName( )返回当前文件夹名,等待进一步获取路径名。如果不是,表明当前已经是文件,则调用系统提供的java.io.inputStream( ),获取文件内容,并进行处理。

setPath( path )

isDirectory()

returnArcName( )

loadFile( )

inputStream( )

returnBytes( )

return ( )

图2-5 文件访问时序图

  1. 书籍解析模块:书籍解析模块实现的主要功能是解析不同格式的书籍文件,包括txt, doc, epub, fb2, htm等主流格式电子书文件。解析完成后,这类文件将会以字节流的格式统一保存发送给前端,前端以Bitmap格式显示在屏幕上。

系统解析不同格式的书籍文件时,首先调用setname(name),将书籍文件名传递给BookInfo类。然后,调用typeof()。BookInfo将截取文件名后缀,判断书籍文件类型。当系统请求解析书籍时,FileInfo将从文件系统中获得的二进制流数据,根据type进行重新处理,去掉无用的信息,转换成utf-8编码格式的文件。

setname(name )

typeof()

return ( )

loadContent( )

handleByType( )

return ( )

return ( )

图2-6 书籍解析时序图

  1. 命令解析模块:命令解析模块主要负责解析来自前端的各类操作命令,然后将根据不同的操作命令做出相应的反应。

doOperation( )

giveOrder( )

return ( )

onDraw ( )

图2-7命令解析时序图

  1. 数据库模块:数据库模块主要负责与数据库的链接,完成与SQLite数据库的数据交互,对数据进行增删查改。数据库保存书籍信息、书籍阅读历史、书签等信息,减少软件响应时间。数据库具体设计见本文2.3节数据库设计。

2.2.2 应用模块

应用模块主要包括客户端各功能模块。即应用模块主要负责管理用户界面,能够对用户的各类操作进行响应,并且将用户操作需求反映给控制模块,并将控制模块返回的结果显示给用户。

图2-8 应用模块体系图

  1. 显示模块:显示模块主要负责将书籍内容显示在用户界面上。通过控制端的处理后,书籍信息将会以图片的形式发送给应用端,应用端能够调用Android系统提供的用户界面绘制借口将书籍显示给用户。
  2. 阅读管理模块:阅读管理模块主要负责接收用户对阅读信息的操作,包括翻页、记录书签等,并且把这些命令发送给控制模块进行处理。

根据用户需求,阅读模块主要有以下几个功能:文本翻页、书签设置。其中,书签设置模块主要有书签的增加、查看、删除与根据书签信息进行跳转等功能。

图2-9 阅读功能用例图

阅读模块需要支持两种翻页方法。一种是点击屏幕左右两侧进行翻页,另一种是滑动翻页。当用户触击屏幕时,onTouch捕捉到点击屏幕的坐标(x,y)。点击翻页只要判断x的范围即可进行翻页。滑动翻页需要获许手指点击时的坐标(x1,y1)和手指离开屏幕时的坐标(x2,y2),根据软件捕捉到的屏幕接触轨迹来判断向前翻页还是向后翻页。

onTouch( )

givePointPos( )

onDraw( )

clickorslide( )

changepage ( )

图2-10 翻页时序图

  1. 书籍管理模块:书籍管理模块主要负责接收用户对书籍文件的操作,包括图书的增加、删除,修改作者、书名、阅读状态等。书籍管理模块会把这些命令发送给控制模块进行处理。

图2-11 书籍管理功能用例图

  1. 设置模块:设置模块主要包括系统设置和阅读设置。系统设置包括系统界面的字体修改、昼夜模式切换、调整背光灯亮度等;阅读设置包括书籍字体、字号修改等。

图2-12 设置功能用例图

2.3 数据库设计

本文所用到的数据库E-R数据模型如下图。

图3-12 数据关系E-R图

本文的设计中,数据库模块共设计了5张表,分别是书籍信息表、书签信息表、书籍封面表、作者信息表以及作者、书籍关系表。

书籍信息表主要用来存放与书籍文件有关的各类信息。其中,书籍ID作为主键,系统将会根据当前书籍信息表内的书籍内容自动设置Id信息。路径属性存放了书籍文件的文件路径,当用户需要根据最近阅读快速打开最近阅读的小说时,系统可以根据缓存中存放的书籍ID快速查找到书籍路径,直接打开书籍,而不需要用户再一次手动浏览文件系统查找书籍所在的文件夹。书籍信息表中设置了格式属性,书籍文件第二次被打开时,系统不需要再一次根据书籍的文件名判断书籍类型,可以直接根据保存好的书籍格式信息来进行书籍解析。编码属性保存了书籍文件内容编码格式,一般来说,会采用utf-8格式。

剩余内容已隐藏,请支付后下载全文,论文总字数:12860字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;