Используя nl.siegmann.epublib, я взял ресурс из книги, которую я пытаюсь отобразить на экране.
Здесь можно найти документы
Код, который я использовал: Book.getCoverImage () и Book.getCoverPage ().
Фактический код выглядит примерно так:
Book book = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView iv = (ImageView)findViewById(R.id.image_test);
try{
Resource res = bookLoaded().getCoverImage();
Bitmap bm = BitmapFactory.decodeStream(res.getInputStream());
iv.setImageBitmap(bm);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public Book bookLoaded(){
AssetManager am = getAssets();
try{
InputStream is = am.open("Ada Madison - [Sophie Knowles Mystery 01] - The Square Root of Murder (epub).epub");
book = (new EpubReader()).readEpub(is);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return book;
}
Теперь проблема, с которой я столкнулся, была resвсегда null с использованием .getCoverImage ().и у меня возникла ошибка исключения при попытке .getCoverPage ();
Мой вопрос: «Является ли использование BitmapFactory правильным способом сделать это? Я делаю что-то не так? или я что-то упустил?».
Чтобы продолжить то, что я исследовал до сих пор: Вы можете получить путь .epub.используя book.GetHref ().Однако вопрос в том, как файл .epub (похожий на файл zip) может получить данные внутри него.Тогда теперь мне нужно искать экстрактор, а затем я могу найти файл изображения.
try{
byte[] newData = bookLoaded().getCoverImage().getData();
Bitmap bmp =BitmapFactory.decodeByteArray(newData, 0, newData.length);
image_view.setImageBitmap(bmp);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Каким-то образом bookLoaded (). GetCoverImage (). GetData ();вызвал исключение