Medoly Ver. 3.2.0, 3.2.1, 3.2.2, 3.2.3

実に8ヶ月ぶりの更新です。
転職、引越など色々と重なってしまったため、対応がかなりご無沙汰になっていました。だいぶ落ち着いてきたのでこれから徐々に更新していくつもり。多分。できれば。
今回は、以前から少しずつ変更していた内容を一気にリリースした感じなので、内容多めです。

2018-10-30 Ver. 3.2.0

  • メディアの再生速度設定追加 (Android 6.0 以降)
  • アルバムアート・歌詞の表示設定変更
  • 有線デバイス接続時の設定を追加
  • 画面の回転・保持設定をデバイス毎の設定に変更
  • 音量の管理をデバイス毎の設定に変更
  • 音量ダイアログを変更
  • 表示タブの長押し、ダブルタップを変更
  • 内部的なメディア管理処理を変更
  • オーバーレイの自動非表示機能追加
  • 言語切替え時の処理を修正
  • アプリがたまに落ちる問題を修正

メディアの再生速度設定追加 (Android 6.0 以降)

メディアの再生速度を調整できるようにしました。Android 6.0以降必須です。

再生速度の調整は、再生順序ポップアップ内にある、再生速度欄から調整してください。1〜400%まで任意に調整できます(標準は100%)。入力欄を1回タップすると候補リストが表示されます。(2回目のタップで入力モードに入ります)
また、「パラメータ」機能において再生速度を保存対象することができるようになっています。

なおこの機能を使用すると、カーナビ等でリモートから操作する機器において、再生位置が正しく追従されなくなる場合があります。これは、リモート側が速度変更に対応していないためです。
細かい話をすると、プレイヤーからは再生位置を断続的に送信しているわけではなく、再生開始と同時に再生速度を送信しています。これを正しく処理できる機器やソフトなら、恐らく再生位置は正しく追従するはずです。しかし、これを正しく処理できるものは、今の所見たことないですね…。

アルバムアート・歌詞の表示設定変更

アルバムアートおよび歌詞の表示設定を変更しました。それに伴い、表示優先度が多少変わりますので、お手持ちの環境では以前と異なる表示になったという事象が発生するかもしれません。

今回の変更で、アルバムアートおよび歌詞の表示対象が細かく設定できるようになりました。具体的には、メディアのプロパティ情報を参照して、表示対象となるファイル名を正規表現で設定できるようになりました。また、複数のファイル名パターンが設定可能となり、優先度を設定できるようになりました。

正規表現は普通の人には設定するのは難しいので、以下のようなパターンが設定できるようになっています。必要に応じて追加・削除するようにしてください。自由な編集もできます。

  • 固定文字 [(albumart|artwork|cover|folder|front|back|thumbnail|thumb|thumbs)] (アルバムアートの場合)
  • メディアファイル名と一致 [%MEDIA_FILE_NAME_BASE%]
  • メディアファイル名から開始 [%MEDIA_FILE_NAME_BASE%.*]
  • メディアファイル名を含む [.%MEDIA_FILE_NAME%.]
  • タイトルを含む [.%MEDIA_TITLE%.]
  • タイトル、アーティストを含む [(?=.%MEDIA_TITLE%)(?=.%MEDIA_ARTIST%).*]
  • タイトル、アルバムを含む [(?=.%MEDIA_TITLE%)(?=.%MEDIA_ALBUM%).*]
  • トラック番号から開始 [0%MEDIA_TRACK%([^\d].)?]

従来通り、アルバムアート、歌詞それぞれについて、メディアフォルダと追加の固定フォルダの2カ所について設定可能です。
なお、この変更に伴い従来の設定は一部削除されてしまいます。お手数ですが、再設定をお願いします。

有線デバイス接続時の設定を追加

有線デバイス接続時の設定を追加しました。

アナログのイヤホンジャックに接続した場合、有線デバイスの設定が適用されます。なお、有線接続とBluetoothの両方が接続されていた場合、有線接続が優先されます。
なお、現状USB接続のイヤホンには適用されません。その辺りは近いうちに修正したいと思います。

画面の回転・保持設定をデバイス毎の設定に変更

音量の管理をデバイス毎の設定に変更

この2件はセットです。いくつか設定を出力デバイスの設定に移動させています。
従来、アプリ音量はアプリに1つだけの設定だったのですが、デバイス単位で保存するようにしました。また、従来の画面スタイルの設定に存在した画面回転および画面保持の設定を、デバイス毎に保存するようにしました。

デバイス毎に出力される音量に違いがあることを考えれば、出力デバイス毎に音量を保存するのは理に適っていると思いますので、これについては理解しやすいと思います。
もう一つの、画面回転および画面保持の設定が出力デバイス毎に保存されることについては、やや違和感があるかと思います。恐らく、設定の行方が分からなくなった方も多いと思います。
例えば自分の場合、車を運転すると携帯を車載ホルダーにセットして横向きに使う事が多いのですが、その際に自動的に横向きにできるようにしたかったため、このような設定配置としました。あと、将来的にはHDMI接続時に設定を切り替えるような仕組みも考えているので、その時にも有効利用できると考えています。

あとこれに伴い、出力デバイスの設定の適用方法を少し見直しています。特に何も設定しない場合、「通常」の設定が適用されます。必要に応じて、デバイス単位に設定で上書きすることができます。これは、設定項目にあるチェックを入れると有効になります。

音量ダイアログを変更

音量ダイアログについて、現在音量を保持しているデバイスの名称およびボリュームの値を表示するようにしました。

表示タブの長押し、ダブルタップを変更

表示タブの内容の長押し、ダブルタップについて、今まで設定でカスタマイズできるようになっていたのですが、これを廃止しました。以降は、表示タブの長押しで同期歌詞のシークまたはメニューの表示、ダブルタップで画面の最大化で固定となります。
廃止理由は、処理が色々面倒だったのと、カスタマイズする必然性が薄かったためです。
これに伴い、表示スタイルの設定について、文言等が少し変更されています。

内部的なメディア管理処理を変更

実は、これが今回の最大の変更点になります。ただし、表向きの機能に変更はありません。内部的なクラス構成を見直し、クラスの分割やリファクタリングにより、処理を大幅に見直しました。これは、メンテナンス性や、今後の機能拡張を見越した上での変更です。これにより、改造や拡張がやりやすくなり、今後の開発がやりやすくなりました。
ただ、再生等で以前と異なる部分が発生している可能性があるので、気づいた点があれば報告いただけると助かります。

オーバーレイの自動非表示機能追加

表示タブのオーバーレイ表示を自動的に消去する設定を追加しました。デフォルトはONです。
これは、表示タブを4秒間操作しないとオーバーレイを非表示にします(以前は、表示/非表示切り替えは画面のタップのみ)。
表示スタイルダイアログ上に、これのON/OFFを切り替える設定を設けました。

言語切替え時の処理を修正

以下のサイトの内容を元に、言語切替え時の処理を見直しました。

[海外対応] AndroidのLocale周りまとめ [多言語対応] - 言いたいことはそれだけか

アプリがたまに落ちる問題を修正

StickyListHeadersというライブラリについて、Android 8.0からエラーが発生するようになっていたため、修正版ライブラリに差し替えています。

参考: Android O Beta - java.lang.IllegalStateException: Handling non empty state of parent class is not implemented · Issue #477 · emilsjolander/StickyListHeaders

2018-10-30 Ver. 3.2.1

  • アプリが落ちるバグを修正

アプリが落ちるバグを修正

バージョンアップに伴い設定値の一部を変更したのですが、一部設定がnullのままの状態で参照されてエラーとなる事象があったため、nullチェックを追加しました。

2018-11-13 Ver. 3.2.2

  • 再生順序のバグを修正
  • 一部テキスト修正

再生順序のバグを修正

これはユーザからの報告があったので対応しました。
再生順序ポップアップメニューで、再生済みメディアを「無視」する設定にしていた場合、ループが正しく設定されない不具合があったので修正しました。これは以前からあったバグらしいのですが、全然気付かなかった…。ちなみに原因は、switch文のbreak抜けバグという、素人かと思うよなミスでした…。

一部テキスト修正

新しく追加した機能について、テキスト周りを少し修正しました。

2018-11-13 Ver. 3.2.3

ループカウントのバグを修正

これはユーザからの報告があったので対応しました。
ループカウントが設定されていた場合、ループカウントが終わって次のメディアに切り替わるところで再生が停止してしまうバグがあったので修正しました。