Android版AozoraEpub3を作れないかを試してみた。EPUB出力まで言ったので途中段階だけど公開してみよう。画像ファイルの読み込みが上手くいかないのと外字フォントや設定変更などの機能をつけていない。ちゃんと動くまで公開しないといつまでも公開できそうにないので。
ソフト名の案、
- AozoraEpub3 for Android 青空文庫テキスト→ePub3変換
- AozoraEpub3 Android
ベースは改造版AozoraEpub3v1.1.1b30Q
AozoraEpub3 for Androidのgithubのリポジトリ名を考えて ChatGPT: GitHubのリポジトリ名として、以下のような候補を考えました!
シンプル & わかりやすい AozoraEpub3-Android ✅(標準的で直感的) AozoraEpub3-for-Android(フル表記だが、やや長め) AozoraE3-Android(短縮形でスッキリ)
githubからリポジトリを作ってクローンするとプロジェクトテンプレートがない。後からプロジェクトをテンプレートを追加する方法がよくわからなかった。android studioをgithubと連携させて、リポジトリを作成する方法にした。
アンドロイドのプロジェクト
kotlinではなくgroovyを選びがち。kotlinはJavaより簡単と言われるがJavaのほうが検索したら資料が見つかるために問題の解決がしやすい。
Files.copy時にalready existエラーが出る
REPLACE_EXISTINGのオプション設定をすることで上書きする。
文字コード自動判別をどこに入れるか
//文字コード判別 String encauto =""; //エンコード設定を一時退避する String encType = (String)jComboEncType.getSelectedItem(); try { encauto=AozoraEpub3.getTextCharset(srcFile, ext, imageInfoReader, txtIdx); if (Objects.equals(encauto, "SHIFT_JIS"))encauto="MS932"; } catch (IOException | RarException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); }
zip時には変換が成功してtxt時に変換が失敗していたのが、txt変換処理の部分のコードを書いていなかった。文字コード自動判別時にはじめの方のテキストが切り取られていたので変換時に変な結果になった。
挿絵のテスト
「雪 中谷宇吉郎」でテストした [WARN] 画像ファイルなし:と出て止まった。zipファイルだったので原因を特定するために、txtと画像を直接読み込んでどうなるかを調べる。 ファイル読み込みでtxtとzipの単一ファイルのみに制限しているので、複数ファイル選択を可にして画像ファイルも選択可能にする。
外字フォント
なんかファイルが生成されなくなった。Device Exploler上にはあるがファイル名が変わっていて、開くと「Error opening contents of device file」というエラーが出る。設定を変えたら生成する場合としない場合がある。
コマンドラインからの変換処理を利用しているが、GUIからの処理のほうがいいのではないか。
入力内容
- 本文テキスト
- 挿絵
- 表紙 option項目 表紙ファイル、出力拡張子、縦書き横書きなど
内部ストレージからファイルをSAFで保存させるには
SAF (Storage Access Framework) でファイルを読み込み → 内部ストレージにコピー → 処理後に SAF で保存 Android 11 以降の Scoped Storage に対応した方法 で、
SAF を使ってファイルを選択(ユーザーが選ぶ) 内部ストレージ (getFilesDir()) にコピー 内部ストレージのデータを加工・処理 SAF を使ってユーザーの指定した場所に保存 を行う方法を紹介します。