基于FBReader的andriod电子书模板

来源:互联网 发布:数据交换平台监控 编辑:程序博客网 时间:2024/05/01 21:01

由于之前写了篇在线生成android应用程序初探(以在线生成EPUB电子书为例)的文章,其中涉及到了生成epub格式的文件以及生成apk阅读器。之前没有对FBReader源码深入研究,每次自动生成都要拷贝200多M的源码,导致生成时间比较长。后来朋友说能不能生成单独的apk电子书文件,而不是阅读器。好吧,作为好兄弟,只好免费做苦力了。后来基于FBReader改了一个电子书的模板,先上截图:

附上源码地址:http://download.csdn.net/detail/peter2000cn/6545297

1. 自定义启动程序图标

2. 图书详细信息,支持图片显示

3. 书籍内容可以选择、拷贝、分享、添加到书签

4. 显示图书章节

5. 全书搜索功能

6. 多种翻页效果

7. 夜间阅读模式

8. 快速翻看功能

9. 屏幕方向设置

10. 丰富的自定义设置


在网上找了些独立的电子书模板,源文件少的可怜,就找到了一个,作者很仗义,见到有人在淘宝上拿这个模板卖钱,果断的把源代码贡献出来了,很是有开源大侠的精神。但是该电子书模板美中不足的是功能略显单薄,比如搜索、动态翻页效果、其他的一些自定义效果等等。

要说功能齐全,还是电子书阅读器最全,网上也有不少的阅读器下载,下载了几个,比如企鹅阅读,还有另外两个阅读器,界面还不错,功能也挺多,但是性能让人堪忧,我用的是Galaxy S4, 图书翻页的时候比较卡,关键是,这阅读器没有源码。

哎,找来找去,不是功能稀少就是性能不好,算了,还是用FBReader改吧,该阅读器功能强大,性能很好,唯一不好的是,代码量有点大,看的费劲。

搭建过程中,最费时的就是要在本地编译一些C++文件了,因为FBReader有些功能(压缩/解压缩,断行,读取电子书内容)是通过这些C++文件来操作的。本来以为源码里面的format plugin都提供的,结果。。。哎!

搭建FBReader环境的文章,上网搜的,挺全活,半个小时搞定。然后看源码,不知不觉两天过去了。。。。。。

源码大概过了一遍,决定开始对FBReader做减肥整形手术。

我的需求很简单,将FBReader改造成单个的电子书文件,以后只用替换书籍文件,就能生成另外一本新的电子书。所以分为下面几个步骤进行:

1. 只用支持一种格式的电子书即可,除去其他格式支持。下表是FBReader所能支持的格式。在众多的格式中,因为需要分章节,列出书籍信息,以及显示图片等, 所以最后选择了支持epub格式。

FormatePubePub 3fb2pdfdjvuhtmlplain textMobipocketrtf, doc (Microsoft Word)pluckerchm.lit

2. 定义epub电子书的位置,放在assets目录下。最开始放在assets目录下读取不出来书本信息,如果在启动的时候把assets信息拷贝到sd卡里的话,读取sd卡的书籍内容就没有问题。无奈,跟踪了一下,发现FBReader读取书籍的方式是采用的多种混合模式。无奈,只好一点点改了。

3. 为FBReader减肥。FBReader提供的源码20多M,编译成apk体积近4M,作为一个单独的电子书,未免有点庞大,需要把不需要的功能都删除掉。最开始没有仔细看源码,纯靠感觉删除,结果导致FBReader罢工了,无奈,在看源码的过程中一点一点删了。除了一些不需要的.java文件外,体积最大的要算是在搭建环境阶段编译的/libs/下的so文件了。由于java源码里面提供了对epub和xhtml格式的读取,所以,稍微修改一些代码,就能把这个文件夹删除了。

减肥之后的FBReader源码体积从下载的20多M直接削减到不到2M,生成的电子书(图书文件200K)体积700k左右,这个大小可以接受,个人感觉还应该还能再减少50k左右。这样一来,自动编译生成一个电子书之需要不到10秒的时间了大笑,看来付出还是有回报的。

下面是利用FBReader做的个简单的电子书,顺便附上这个demo的下载地址:


DEMO APK 下载

晚点再把这个功能加到自动生成的工具里,有需要生成电子书的联系!




原创粉丝点击