开源电子书项目FBReader初探(一)

栏目: IOS · Android · 发布时间: 5年前

内容简介:项目官网:fbreader.org/androidFBReader是一个开源电子书阅读器,如今已经支持很多设备。不仅有PC版,支持的操作系统有GNU/Linux,MicrosoftWindows,也支持移动终端设备,比如NokiaInternetTablets。早在2008年4月13日,就已经有Android版本,即大家熟知的FBReaderJ。具有以下特性:

项目官网:fbreader.org/android

FBReader是一个开源电子书阅读器,如今已经支持很多设备。不仅有PC版,支持的操作系统有GNU/Linux,MicrosoftWindows,也支持移动终端设备,比如NokiaInternetTablets。早在2008年4月13日,就已经有Android版本,即大家熟知的FBReaderJ。

具有以下特性:

  • 支持电子书格式:ePub、kindle (mobipocket)、fb2、rtf、html、microsoft doc、纯文本、PDF(需要PDF插件)、DJVU(需要DjVU插件)、CBR和CBZ漫画(需要comic插件)
  • 可拓展性:提供纲领性的API,可以通过第三方插件获得一些额外的特性。例如比较受欢迎的插件Text-to-Speech
  • 支持直接阅读zip文件
  • 提供直接访问许多网络电子书图书馆和商店
  • 支持自定义OPDS目录的添加
  • 与一些流行的字典如ColorDict, SlovoEd, Fora等整合
  • 可以使用外部TrueType/OpenType字体
  • 29种语言的本地化
  • 包含16种语言的断字模式
  • 按标题、作者、系列等组织用户图书库
  • 书收集、阅读位置、书签等可同步在基于Google Drive™的FBReader云服务

一、导入项目并运行

项目地址

github.com/geometer/FB…

导入

改项目是eclipse编写的,所以第一步,把这个项目变成AS项目并导入AS 创建aidl目录,将FBReader项目中使用的aidl文件放于此 在此一定切记不要修改项目包名,否则将是一场灾难!!!

运行

编译项目so文件 如果将FB作为依赖的话,还需要修改FBReaderIntents中包名常量DEFAULT_PACKAGE为自己应用的包名

二、项目源码结构

源码大体结构

FBReader的源码文件结构大致如下:

文件夹 说明
src JAVA源代码
asset 这里有默认的那本书,还有背景图片等
docs 里面有一PDF,介绍如何安装Cygwin
icons 一些图标,比如menu,文字搜索的小图标
jni c/c++实现的库文件,内容比较多
libs 生成的so文件在这里
ojb .a文件
obsolete 废弃
res 资源
scripts 用处不明
third-party 三方引用
AndroidManiffest.xml 清单文件

针对于源代码各包功能浅析

包名 说明
com/paragon/dictionary/fbreader 字典查询
org.amse.ys.zip 这个包是解压用,epub本身就是一个压缩文件,所以要解压缩
org.fbreader.util 比较排序
org.geometerplus 核心代码包
org.vimgadgets.linebreak 断出一个字,例如“你好,再见!”,断字结果为“你”“好”“再”“见”

核心代码包功能之org.geometerplus.android

包名 说明
org.geometerplus.android.fbreader.api 这个包是FBReader通过AIDL实现的API接口,用于安装插件等
org.geometerplus.android.fbreader.bookmark FB自带书签页和编辑页及编辑 工具
org.geometerplus.android.fbreader.config 各种FB相关配置,并定义了对应service和SQLite
org.geometerplus.android.fbreader.convers 图书封面相关缓存
org.geometerplus.android.fbreader.crash 图书目录相关的修复
org.geometerplus.android.fbreader.dict 词典相关工具,包含打开词典Activity的定义
org.geometerplus.android.fbreader.error 图书阅读中出错时打开的Activity
org.geometerplus.android.fbreader.formatPlugin 根据特定插件,生成相关Intent,可用于安装插件
org.geometerplus.android.fbreader.httpd 定义了dataservice和DataServer(提供获取封面和video服务)
org.geometerplus.android.fbreader.image 只有一个ImageViewActivity,长按显示图片
org.geometerplus.android.fbreader.library 主要是初始化数据库books.db,还有图书信息的activity
org.geometerplus.android.fbreader.libraryService 定义了libraryservice服务,进行书籍相关管理以及根据文件路径或特定id等获取、查询到真实的book
org.geometerplus.android.fbreader.network 这里是FBReader网络连接相关的,比如下载书籍,书仓授权,OPDS相关
org.geometerplus.android.fbreader.preferences 配置信息相关的,比如背景,文字大小,翻页动画速度,以及颜色等
org.geometerplus.android.fbreader.sync 书签等的同步相关,定义了SyncService
org.geometerplus.android.fbreader.sync TipsActivity
org.geometerplus.android.fbreader.tree TreeActivity和TreeAdapter,定义树形结构Activity、Adapter的基类
org.geometerplus.android.fbreader.util 图片同步和简单dialog的activity
org.geometerplus.android.util 包工具类,数据库,还有更新UI、文件工具等

该包中的FBReader即为程序的主Actitiy,也是阅读的activity。其他类,诸如已Action为结尾的是各种FBReader操作对应的执行类,其核心在于run方法内部定义的操作行为。还有一些类似popup、notifier等也都是具体的一些操作对应。

核心代码包功能之org.geometerplus.fbreader

包名 说明
org.geometerplus.fbreader.book 书籍、书签等相关model,数据库,工具类
org.geometerplus.fbreader.bookmodel FBReader数据,会生成BookModel,里面有 Java 的Model和本地返回的Model
org.geometerplus.fbreader.fbreader 主要是图书显示的FBView,还有一些选择文字的Action,翻页的Action
org.geometerplus.fbreader.formats 插件入口,FBReader把epub解析,txt解析等当做一个个插件
org.geometerplus.fbreader.library 此包中有图书的作者类,图书信息类,文件类,以及路径生成的树结构
org.geometerplus.fbreader.network 网络相关
org.geometerplus.fbreader.sort 排序
org.geometerplus.fbreader.tips 网络相关行为提示
org.geometerplus.fbreader.tree 自定义的书结构,FBTree
org.geometerplus.fbreader.util 根据传入的起始位置,获取文字片段

该包中另包含一个Paths类,其内容是整个FBReader项目的路径相关。

核心代码包功能之org.geometerplus.zlibrary.core

包名 说明
org.geometerplus.zlibrary.core.application 并不是Android里的Application,而是作者自定义的管理应用
org.geometerplus.zlibrary.core.constants 各种命名空间,其实就是各种url链接
org.geometerplus.zlibrary.core.drm 加密相关
org.geometerplus.zlibrary.core.encodings 用于读取encoding/Encodings.xml内的编码
org.geometerplus.zlibrary.core.filesystem 里有各种File类,比如压缩File,资源File,本地File等
org.geometerplus.zlibrary.core.filetypes 文件类型
org.geometerplus.zlibrary.core.fonts 字体信息
org.geometerplus.zlibrary.core.image 图片加载,图片处理相关的包
org.geometerplus.zlibrary.core.language 编码检测包
org.geometerplus.zlibrary.core.library ZLibrary获取FBReader版本,系统信息,DPI,调节屏幕亮度等
org.geometerplus.zlibrary.core.money Money model和exception
org.geometerplus.zlibrary.core.network Cookie数据库建立,网络请求,网络管理相关的包
org.geometerplus.zlibrary.core.options FBReader自定义的数据类型,比如ZLBoolean3Option,ZLColorOption
org.geometerplus.zlibrary.core.resources 本地资源文件
org.geometerplus.zlibrary.core.tree ZLTree树结构数据基类,图书目录数据为此类子类
org.geometerplus.zlibrary.core.util 各种工具类
org.geometerplus.zlibrary.core.view 自定义的view类,是阅读界面显示的最高抽象类,以及事件监听,处理
org.geometerplus.zlibrary.core.xml 解析xml

核心代码包功能之org.geometerplus.zlibrary.text

包名 说明
org.geometerplus.zlibrary.text.hyphenation 根据断字来判断是哪种语言
org.geometerplus.zlibrary.text.model 一个抽象类包,有对文字的处理,以及对段落的处理,保存文字到缓存
org.geometerplus.zlibrary.text.view 文字被结构化,文字块,一行文字,文字段,一页,都在此包下处理,以及显示的view

以上所述就是小编给大家介绍的《开源电子书项目FBReader初探(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

你不知道的JavaScript(上卷)

你不知道的JavaScript(上卷)

[美] Kyle Simpson / 赵望野、梁杰 / 人民邮电出版社 / 2015-4 / 49.00元

JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开发者无需理解语言内部的原理,就能编写出功能全面的程序;就像收音机一样,你无需理解里面的管子和线圈都是做什么用的,只要会操作收音机上的按键,就可以收听你喜欢的节目。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习也无......一起来看看 《你不知道的JavaScript(上卷)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具