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对象,这样就可以取到封面图信息了。

程序运行截图:

android平台解析epub格式的书籍信息_第1张图片

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


更多相关文章

  1. Android IOS 安全书籍
  2. Android中JSON数据格式的简单使用
  3. Android Studio自动排版格式化(android排版和xml排版)
  4. Android 加载.gif格式图片
  5. android 解析json数据格式
  6. 书籍推荐下载
  7. Android色彩空间像素格式定义及设定
  8. Android SimapleDateFormat 日期格式的转换方法
  9. 修改android日期格式

随机推荐

  1. android解压ZIP文件
  2. Android(安卓)Timer 实现方法
  3. Android(安卓)打开指定文件夹
  4. 【实用工具】adb检测android设备
  5. 获取Android各种系统信息
  6. Android(安卓)获取手机联系人信息
  7. android 让 webView 中的超链接失效
  8. Failed to install the following Androi
  9. 2019年8月
  10. android mvvm databinding在dialog中的使