5

我找到了一个使用 epublib 在 android 中阅读 epub 书籍的解决方案。我能看懂这本书的字幕。但是我没有找到逐行阅读内容的方法。我怎样才能做到这一点?

获取书名的示例代码是

  private void logTableOfContents(List<TOCReference> tocReferences, int depth) {
    if (tocReferences == null) {
        return;
    }
    for (TOCReference tocReference : tocReferences) {
        StringBuilder tocString = new StringBuilder();
        StringBuilder tocHref=new StringBuilder();
        for (int i = 0; i < depth; i++) {
            tocString.append("\t");
            tocHref.append("\t");
        }
        tocString.append(tocReference.getTitle());

        tocHref.append(tocReference.getCompleteHref());
        Log.e("Sub Titles", tocString.toString());
        Log.e("Complete href",tocHref.toString());

        //logTableOfContents(tocReference.getChildren(), depth + 1);
    }
}

从http://www.siegmann.nl/epublib/android得到这段代码

怎么能看懂书的故事...

4

2 回答 2

7

我不确定这是在 epub 文件中导航的方式。据我所知(直到现在 - 我还在学习),获得所有书籍内容的更好方法是基于脊椎部分。但是仍然 - 我不知道如何将这两个东西(TOC 和真正的脊椎)与 epublib 接口连接起来。根据文档: “书脊部分是按阅读顺序排列的书籍部分。这与目录部分形成对比,目录部分是书籍部分的索引。”

就是这样——如果你喜欢的话——这是一个片段:

Spine spine = new Spine(book.getTableOfContents());
for (SpineReference bookSection : spine.getSpineReferences()) {
            Resource res = bookSection.getResource();
                try {
                    InputStream is = res.getInputStream();
                    //do something with stream
                } catch (IOException e) {
于 2011-07-12T13:48:45.850 回答
3

好吧 - 我不太确定导航,但也想知道如何做到这一点现在 - 我有这样的东西(它是逐行读取):

private void logTableOfContents(List<TOCReference> tocReferences, int depth) {
    if (tocReferences == null) {
        return;
    }
    for (TOCReference tocReference : tocReferences) {
        StringBuilder tocString = new StringBuilder();
        for (int i = 0; i < depth; i++) {
            tocString.append("\t");
        }
        try{
           InputStream is = tocReference.getResource().getInputStream();
           BufferedReader r = new BufferedReader(new InputStreamReader(is));
           String line;
           while ((line = r.readLine()) != null) {
               String line = Html.fromHtml(line).toString();
           }
        }
        catch(IOException e){

        }




        //logTableOfContents(tocReference.getChildren(), depth + 1);
    }
}
于 2011-07-11T13:18:47.563 回答