Для чтения epub на Андроид


Как я могу улучшить этот код для чтения файла epub? Код выглядит следующим образом:

package org.example.mymenu;

import java.awt.print.Book;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
//import java.util.List;

//import org.example.mymenu.Book;
//import nl.siegmann.epublib.domain.TocReference;
//import nl.siegmann.epublib.epub.epubReader;
import android.app.Activity;
import android.content.res.AssetManager;
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;

/**
 * Log the info of 'assets/books/testbook.epub'.
 *
 * @author paul.siegmann
 *
 */
public class Eread extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    AssetManager assetManager = getAssets();
    try {
      // find InputStream for book
      InputStream epubInputStream = assetManager
          .open("/assets/sample.epub");

      // Load Book from inputStream
      Book book = (new Eread()).readEpub(epubInputStream);


    } catch (IOException e) {
      Log.e("epublib", e.getMessage());
    }
  }

  Book readEpub(InputStream epubInputStream) {
    // TODO Auto-generated method stub
      Eread epubReader = new Eread();
      try {
        Book book = epubReader.readEpub(new FileInputStream("sample.epub"));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
  }


}


4912
4
задан 15 июня 2011 в 12:06 Источник Поделиться
Комментарии
1 ответ


  1. Согласно соглашения о коде на языке программирования Java, 9. Соглашения об именовании, я бы назвал класс EpubReader. Имя должно быть существительным, и старайтесь избегать аббревиатур, что делает код труднее читать.

  2. Не readEpub способ быть частная? Почему это доступ по умолчанию?

  3. В readEpub не использовать epubInputStream параметра. Зачем это читать образец.формат EPUB? Похоже, тестовый код. Кроме того, этот класс кажется очень неполным. метод onCreate создает новый Eread экземпляра, затем называет его readEpub способ. В readEpub создает (опять!) новый Eread экземпляра (epubReader) затем называет его readEpub способ. Это бесконечный цикл.

  4. метод onCreate - это метод экземпляра, так что вы могли бы назвать readEpub без создания нового Eread экземпляр:

    Book book = readEpub(epubInputStream);

3
ответ дан 31 января 2012 в 08:01 Источник Поделиться