android下解析epub格式书籍的相关资料不多,查了很久找出了一些相关资料,找到了一个epublib包,

Epublib开发android的主页:http://www.siegmann.nl/epublib/android

相关jar包下载:https://github.com/downloads/psiegman/epublib/epublib-core-latest.jar

http://www.slf4j.org/android/slf4j-android-1.6.1-RC1.jar

在线API:http://www.siegmann.nl/static/epublib/apidocs/

具体的书籍信息提取代码如下:

package com.zyj.ui;import java.io.IOException;import java.io.InputStream;import nl.siegmann.epublib.domain.Book;import nl.siegmann.epublib.domain.Metadata;import nl.siegmann.epublib.domain.Resource;import nl.siegmann.epublib.epub.EpubReader;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends Activity {    /** Called when the activity is first created. */private TextView bookInfoText;private ImageView coverImage;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setContentView(R.layout.main);                bookInfoText = (TextView) findViewById(R.id.bookInfoText);        coverImage = (ImageView) findViewById(R.id.coverImage);                try {InputStream is = getAssets().open("timefriend.epub");Book book = new EpubReader().readEpub(is);Metadata metadata = book.getMetadata();String bookInfo = "作者:"+metadata.getAuthors()+"\n出版社:"+metadata.getPublishers()+"\n出版时间:" +metadata.getDates()+"\n书名:"+metadata.getTitles()+"\n简介:"+metadata.getDescriptions()+"\n语言:"+metadata.getLanguage()+"\n\n封面图:";bookInfoText.setText(bookInfo);nl.siegmann.epublib.domain.Resources ress = book.getResources();Resource res = ress.getById("cover");byte[] data = res.getData();Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);coverImage.setImageBitmap(bitmap);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}            }}

说明:epub格式的书籍其实就一个zip压缩包,可以将其后缀名改为.zip然后解压缩后查看文件目录。

遇到的问题:

在获取书籍封面图片的时候通过epub主页提供的方法

Bitmap coverImage = BitmapFactory.decodeStream(book.getCoverImage() .getInputStream()); 中book.getCoverImage()得到的对象为null,查看解压后的文件后发现很多epub格式的书籍中都没有将封面图片的信息放到<metadata>标签下的cover标签中。

解决办法:通过book.getResources()获得Resources对象,然后通过方法getById("cover")获得Resource对象,这样就可以取到封面图信息了。

程序运行截图:

原文地址:http://blog.csdn.net/iamlixiaolong/article/details/7484436


更多相关文章

  1. Android(安卓)通过intent 传递对象
  2. android如何调用Web Service手机归属地练习
  3. android之ArrayAdaper之Spinner
  4. Android使用DigitalClock进行定时抢购
  5. Android线程间通信的Message机制
  6. Android(安卓)Studio AIDL进行IPC通信的使用步骤
  7. [置顶] android 内存泄露那些事情之Handler(一)
  8. 分享方法:android 获得屏幕状态
  9. Android(安卓)Camera Subsystem - startPreview

随机推荐

  1. Android Things:“1024工场”店铺开张啦!树
  2. 微信 Tinker 的一切都在这里,包括源码
  3. Android ListView监听上下滑动(判断是否
  4. Android本地数据存储之Sharedpreference
  5. Android Studio 出现 Gradle's dependenc
  6. Android基础入门教程——7.4 Android调用
  7. 如何删除android中的蓝色操作栏?
  8. 解决Android Studio下载更新Android SDK
  9. Android自定义View底部连续圆环效果
  10. Android中RecyclerView的item中控件的点