私は電子ブック (epub 形式) を読み取る Android アプリケーションを開発しています。今のところ、非常に優れた epub リーダーである Paul Siegeman の epublib ライブラリを使用していますが、いくつかの制限があります。 (実際の本を読むように)ページを水平方向に移動できないため、独自の実装が必要ですが、行き詰まっています。
実際に epub を読み取り、それを webview 内に配置する方法は次のとおりです。
private void openEpub(String bookFilename){
WebView webView = (WebView) findViewById(R.id.webView);
nl.siegmann.epublib.domain.Book book=null;
try {
book = (new EpubReader()).readEpub(new FileInputStream(Environment.getExternalStorageDirectory().getPath() + "/" + bookFilename));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String baseUrl = Environment.getExternalStorageDirectory().getPath() + "/";
String data=null;
try {
data = new String(book.getContents().get(1).getData());
} catch (IOException e) {
e.printStackTrace();
}
webView.loadDataWithBaseURL(baseUrl, data, "text/html", "UTF-8", null);
}
ご覧のとおり、WebView でスクロールできる唯一の方法が上/下であることがわかっている限り、WebView に電子ブックを表示します。
getData() が返し、webview がページにロードする html 文字列を分割し、viewpager で 1 つずつ表示することを考えていましたが、画面サイズに応じて html を正しく分割するにはどうすればよいですか?
この考えで、私は正しい道を進んでいると思いますか? epub を左から右/右から左 (ページネーション) に表示する他のソリューション、またはそうするための他の「無料または安価な」ライブラリはありますか? (PageTurner を試してみました。とても良いですが、商用版は私には高すぎます)