DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 77|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-1 06:13:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Computer Knowledge and Technology 电脑知识与技术
本栏目责任编辑:王力计算机教学与教育信息化
第8 卷第27 期(2012 年9 月)
基于Android 的电子书阅读器的设计与实现
马鸣, 钱鸽
(南阳理工学院,河南南阳473004)
摘要:Android 系统是一个层次的软件集,所以先从层次方面对Android 进行系统研究;其次,通过对Android 平台上应用的
开发,更进一步了解Android 这个系统。此次基于Android平台的电子书阅读器的设计与实现主要通过Eclipse开发工具, Java
语言与Sqlite数据库来完成的。本阅读器实现了本地阅读,手动翻页,书签的添加、查看、删除,自动翻页,书架,快速定位,及
在线下载。本文主要介绍程序的设计思路、逻辑、架构、及数据库的设计与整体的实现流程。最后进一步阐述Android电子阅
读器对文化发展的影响及其市场价值。
关键词:Android; 电子阅读器; java; sqlite; 书签
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)27-6533-05
Design and Realization of the Ebook Reader Based on Android
MA Ming , QIAN Ge
(Nanyang Institute of Technology, Nanyang 473004, China)
Abstract:The Android system is a hierarchical software set, so doing system research on the levels of Android come to first; Sec?
ondly, leaning more about the development of applications on the Android platform, a better understanding of the Android Sys?
tem. The completed of the design and realization of e-book reader based on the Android platform mainly by using the Eclipse
development tools, Java language and Sqlite database. The e- book reader has realized the locality reading, manual page, add
bookmark, quiry, delete, auto flip, bookshelf, rapid positioning, and online download. This article mainly introduces the thinking
and logic, architecture of the program design, the design of the database and the whole realization process. Finally, further elabo?
rates the influence of Android e-reader on the cultural development and their marketable value.
Key words: Android; Ebook reader; java; Sqlite; bookmark
1 概述
电子书和电子书阅读器早在上世纪90年代就已经出现,它以其环保、容量大、携带方便等特点迅速吸引广大阅读爱好者的青
睐,经过多年的发展,各种不同版本的电子书相继出现,使得电子书阅读器的风格、界面更加完善接近真实,并给用户带来了非凡的
体验[1]。
2 系统相关技术分析
2.1 Android 系统架构
Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。Android的系统架构采用了分层的架构。android
分为四个层,分别是应用程序层、应用程序框架层、系统运行库层和linux内核层。随着Android的快速发展,如今已允许开发者使用
多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢
迎,成为真正意义上的开放式操作系统[2]。
2.2 系统开发工具
2.2.1 开发平台:Eclipse IDE for Java Developers
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,目前亦有人通过插件使其作为C++、Python、
PHP等其他语言的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件
收稿日期:2012-08-30
作者简介:马鸣(1983-),男,河南省南阳市人,助教,研究生,主要从事《移动开发》、《C#语言程序设计》、《c#winform 开发》、《ASP.
NET 基础》、《ASP.NET 高级应用》等课程的教学工作;钱鸽(1982-),女,河南省南阳市人,助教,研究生,主要从事《C 语
言程序设计》、《数据结构》、《VC++》等课程的教学工作。
E-mail: [img]mailto:wltx@cccc.net.cn]wltx@cccc.net.cn
[img]http://www.dnzs.net.cn]http://www.dnzs.net.cn
Tel:+86-551-5690963 5690964
ISSN 1009-3044
Computer Knowledge and Technology 电脑知识与技术
Vol.8, No.27, September 2012.
6533
Computer Knowledge and Technology 电脑知识与技术
计算机教学与教育信息化本栏目责任编辑:王力
第8 卷第27 期(2012 年9 月)
开发商以Eclipse为框架开发自己的IDE[4]。
2.2.2 开发所用到的数据库:SQLite
SQLite是一个非常流行的嵌入式数据库,它支持SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何
人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了SQLite。SQLite 由以下几个组件组成::SQL 编译器、内核、后端以
及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite 的内核变得更加方便[5]。
2.2.3 网络环境:Tomcat 服务器
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的
功能。
Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首
选。当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩
展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的[6]。
3 系统的设计
3.1 系统流程设计
系统流程主要是对图书阅读管理流程进行详细描述,通过采用系统流程图形来描述管理业务活动、进行规范化说明。
主业务流程介绍:
1)启动程序,进入开机动画,稍后跳转到主界面;
2)进入主界面后,显示一段文字介绍,主要对操作进行大致说明;
3)导航条——包括查找、书签、退出及设置等四项操作;
4)主界面包括两个子界面,可以左右滑动进行切换,第二个界面为书架界面,主要功能为对近期所阅读过的书按照阅读的时间
先后顺序保存,倒序显示出来。业务流程图如图1所示。
图1 主业务流程
3.2 系统功能模块设计
对于一个实用性的电子书阅读器,从功能上来讲主要分为以下几大部分:
从整体功能上来看,不难想象到的是图书阅读、翻页、分页、跳转、添加书签、书签跳转、删除书签、文本设置、主题设置及自动翻
页等。功能模块图如图2所示。
4 系统的实现
由于在整个实现过程中,牵扯到了许许多多的控件、方法、类与接口。所以在编码与实现方面,本文主要是对重要的过程、类与
方法进行介绍。电子书阅读器的实现主要分为以下几个阶段:
4.1 主界面的实现
6534
Computer Knowledge and Technology 电脑知识与技术
本栏目责任编辑:王力计算机教学与教育信息化
第8 卷第27 期(2012 年9 月)
主界面主要是通过导航条的方式,引导用户进行相关的操作。
主界面显示布局,上部为主界面、及书架两个字界面切换按钮,下部为操作导航。
阅读主界面如图3所示。
图3 阅读器主界面
此功能相关代码如下:
private void loadButtomMenu()
{ gv_menu = (GridView) this.findViewById(R.id.gv_menu);
gv_menu.setBackgroundResource(R.drawable.channelgallery_bg);
gv_menu.setGravity(Gravity.CENTER);
ArrayList> data = new ArrayList>();
HashMap map = new HashMap();
map.put("itemImage", R.drawable.ic_menu_search);
map.put("itemText","查找");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.ic_menu_book_flag);
map.put("itemText","书签");
data.add(map);
图2 功能模块图
6535
Computer Knowledge and Technology 电脑知识与技术
计算机教学与教育信息化本栏目责任编辑:王力
第8 卷第27 期(2012 年9 月)
map = new HashMap();
map.put("itemImage", R.drawable.ic_menu_exit);
map.put("itemText","退出");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.ic_menu_manage);
map.put("itemText","设置");
data.add(map);}
4.2 分页及书签的实现
分页是通过对以流形式的文本进行分段读取与显示,显示内容的多少主要是根据字体大小及设备屏幕大小来进行计算的。翻
页动画的实现效果,如图4所示。
图4 预读与翻页效果
此功能相关代码如下:
public BookPageFactory(int w, int h)
{ pageNum = 1;
mWidth = w;
mHeight = h;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setTextAlign(Align.LEFT);
mPaint.setTextSize(m_fontSize);
mPaint.setColor(m_textColor);
mVisibleWidth = mWidth - marginWidth * 2;
mVisibleHeight = mHeight - marginHeight * 2;
mLineCount = (int) (mVisibleHeight / m_fontSize);
} public void openbook(String strFilePath) throws IOException
{ book_file = new File(strFilePath);
bookTitle = strFilePath.substring(strFilePath.lastIndexOf("/")+1, strFilePath.lastIndexOf("."));
long lLen = book_file.length();
m_mbBufLen = (int) lLen;
m_mbBuf = new RandomAccessFile(book_file, "r").getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, lLen);
}
4.3 网络下载的实现
在线图书下载进度提示,如图5所示。
6536
Computer Knowledge and Technology 电脑知识与技术
本栏目责任编辑:王力计算机教学与教育信息化
第8 卷第27 期(2012 年9 月)
图5 在线下载
此功能相关代码如下:
public void run() {
String temp = bookInfo.get("id");
String bookName = temp.substring(temp.indexOf(":") + 1);
String bookUrl = "http://192.168.0.99:8080/web/src/" + bookName + ".txt";URL url;
url = new URL(bookUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
inStream = conn.getInputStream();
progressLength = conn.getContentLength();
RandomAccessFile accessFile = new RandomAccessFile(saveDir,"rwd");
accessFile.setLength(progressLength);
byte[] buffer = new byte[1024];
int len = 0;
int countLen = 0;
while ((len = inStream.read(buffer)) != -1) {
accessFile.write(buffer, 0, len);
countLen += len;
Message msg = handler.obtainMessage();
msg.arg1 = countLen;
System.out.println("len=" + len);
msg.sendToTarget();
Thread.sleep(1000);//service 中下载进度条的更新时间间隔
} accessFile.close();
}}}
5 结束语
本阅读器围绕日常生活与学习展开,用户可以通过本阅读器进行文本阅读。主要目标是,帮助用户通过手机或便携式设备管
理图书及智能保存用户阅读进度,模拟真实手动翻页,使用户得到更加完美的用户体验。此外,还可以为用户建立一个属于自己的书架,帮助用户最快的找打自己喜欢的书。用户也可以通过web服务器来在线下载自己喜爱的书,尽可能的满足用户的阅读需求。
参考文献:
[1] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.48-50.
[2] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2012:45-46.
[3](美)墨菲.Android开发入门教程[M].李雪飞,吴明晖,译.北京:人民邮电出版社,2010:18-20.
[4] 王世江,盖索林.Goggle Android开发入门指南[M].北京:人民邮电出版社,2009:35-38.
[5] 王世江,余志龙,陈昱勋.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010:40-43.
[6] 公磊.基于Android的移动终端应用程序开发与研究[J].计算机于现代化,2008,7(15):35-37.
基于Android的电子书阅读器的设计与实现.pdf (1.28 MB, 下载次数: 0)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-28 00:01 , 耗时 0.103008 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表