Medoly Ver. 2.7.0, 2.7.1

2016-05-09 Ver. 2.7.0
– パラメータ保存機能追加
– 設定の保存処理を全体的に変更
– 表示タブの画面保持ボタンを表示スタイルボタンに変更
– 検索画面でフォルダ階層を戻った際に先頭に戻らないように変更
– Bluetoothで再生時間が正しく表示されない問題修正
– 共有メディアの生成キュー追加でエラーとなる問題修正
– 非同期歌詞をループさせるとスクロールが追従しない問題修正
その他諸々

2016-05-10 Ver. 2.7.1
– Android 4.2以前の機種でエラーが発生する問題を修正しました
– プレイリストが存在しない場合のエラーを修正しました

Ver. 2.7.0

パラメータ保存機能追加

今回追加したこの機能は、現在の再生パラメータを保存し、次回再生時に同じパラメータを適用するための機能です。再生パラメータとは以下のものを指します。

  • ループ種別(ループ無し/単体ループ/区間ループ)
  • ループ回数
  • 区間ループ位置(サンプリング位置)
  • アプリ音量(0~1.0)
  • アルバムアート表示状態(ON/OFF)
  • 歌詞表示状態(ON/OFF)
  • 歌詞同期状態(ON/OFF)
  • 歌詞オフセット(ms)
  • 歌詞サイズ(sp)
  • 表示スタイル(レイアウト、外観)
  • プラグインイベント状態(ON/OFF)

パラメータ保存機能では、これらの状態を保存しておくことができます。具体的には、以下のような利用を想定しています。

  • 区間ループの位置を保存する。
  • 音量の大きい曲の音量を抑える(音量を高める設定は、現在のところできません…)
  • 同期歌詞のズレを調整する
  • 特定のフォルダの曲に対し、Last.fmへの通知を行わないようにする

[設定方法]

パラメータを保存する最小の手順は以下の通りです。

  1. 曲を選択
  2. プロパティタブメニューの「パラメータ保存」を選択
  3. 「対象パラメータ」の項目タップし、保存対象となるパラメータにチェックを入れる
  4.  「OK」ボタンを押す。
パラメータ保存ダイアログ

パラメータ保存ダイアログでは、保存対象パラメータの選択と、パラメータの適用条件を設定します。
「対象パラメータ」は、保存対象となるパラメータです。現在設定されている値が保存されます(この画面でパラメータを変更することはできません)。
「プロパティ条件」は、このパラメータを適用する条件となるパラメータの値です。ここに加えられた全ての条件に一致するメディアに対して、自動的にパラメータが適用されます。初期値では、現在選択されているメディアのフォルダとファイル名が入力されています。例えばここで「アルバム」プロパティを対象にすれば、そのアルバム全てに同じパラメータが適用されることになります。
「追加」ボタンで条件の追加、「削除」ボタンで条件の削除ができます。また、条件をタップするとダイアログから条件の編集を行うことができます。

プロパティ条件ダイアログ

プロパティ条件ダイアログからは、プロパティの条件を設定することができます。プロパティの種別と、その値を入力しします。「一致条件」は「部分一致」「前方一致」「後方一致」「完全一致」「正規表現」から選択できます(動作の違いは名称の通りなので、詳細は省略します。正規表現はJavaの動作と同一です)。「あいまい一致」は、文字列を補正してある程度の相違を吸収します。どの程度補正されるかの詳細はどこか別の場所で説明するかもしれません。「否定一致」の場合は、このプロパティ条件に一致しない場合に条件が成立するようになります。

なお、こうして保存されたパラメータは、メイン画面右上のメニューから「パラメータ」を選択すると一覧表示することができます。

パラメータ一覧ダイアログ

この一覧では、現在適用対象の保存パラメータがハイライト表示されます。パラメータは複数同時に適用されることはありません(今のところは)。このリストは上の方が優先されるため、同一の条件のパラメータが複数存在した場合、上の方が優先されます。リスト左側のつまみで順序を変更することができます。つまみを横方向に動かすと項目が削除されます。
項目をタップすると、適用するパラメータを変更することができます。「編集」ボタンを押すとダイアログが開き、パラメータの条件を変更することができます(チェック項目は変更できません) 。

[適用パラメータの状態]

パラメータが適用された状態では、適用中パラメータに関連するアイコンや文字列等やが緑色に変わります。例えば、「アルバムアート表示状態がON」の状態となるパラメータが適用されている場合、メイン画面のアイコンが緑色になります。

アルバムアート表示ONのパラメータ適用中

この緑色が、パラメータ適用中であることを示します。この状態でアルバムアートの表示状態を切り替えると、現在の状態が上書きされます(パラメータ適用状態が解除されます)。

そんな感じで、パラメータ機能を簡単に解説してみましたが、思ってた以上に複雑な機能になってしまいました。本来これは、区間ループの保存をするための機能のみを持たせる予定だったのですが、構想が膨らんでこんな過剰な機能になってしまいました。ただ、汎用性に優れている分、応用が利きやすく、例えば将来的にイコライザの機能を持たせた場合、「○○のジャンルではこの音、○○のアルバムではこの音の設定にする」という感じの使い方もできるはずです。
現状、同時に一つのパラメータ設定しか適用されないことは課題として認識しています。 複数同時に適用される場面も想定されるはずですが、その辺を作るのが大変だったので妥協しているところです。ユーザ様からの要望があれば、同時に複数適用する処理も入れるかもしれません。ただ、機能が複雑すぎて誰も使わなかったらどうしよう…と思ってるのが正直なところです。
あと、作るの凄く大変だったので、とんでもなく時間かかりました…。
 

設定の保存処理を全体的に変更

 パラメータ保存機能を追加したことに伴い、パラメータの保持方法を大幅に変更しています。というか、全くの別物になっています(おかげでとんでもなく時間が
かかりましたが…)。従来の設定値を新しい保存方法に移行させるための変換処理が行われています。なお、設定のエクスポート/インポートにも対応していま
すが、旧設定をインポートした際も同様の変換処理が行われるため、一応インポートは出来るはずです。ただ、あまり真面目に検証していないため、出来れば今
回のバージョンで設定を再度エクスポートしておいていただけると助かります。
 

表示タブの画面保持ボタンを表示スタイルボタンに変更

表示タブに初期バージョンからずっと鎮座していた「画面の点灯」切替えボタンですが、今回このボタンを表示スタイル設定ダイアログを表示するためのボタンに変更しました。理由は、「そもそもこれ独立したボタンにするほど頻繁に使わないよね」っていう至極真っ当な感覚です。
この画面点灯の設定は、表示スタイルダイアログの中に組み込んでしまいました(それに伴い、ダイアログの内容が少し変更されています)。

 

検索画面でフォルダ階層を戻った際に先頭に戻らないように変更

これはずっと気になっていたのですが、以前は検索画面のストレージタブで、フォルダの階層を上に上がった際に、一覧の先頭まで戻ってしまっていました。そのため、ファイルやフォルダが大量に存在している場合に「フォルダを開く→一旦上位フォルダに戻る」という操作を行うと、一々上に戻されてしまって非常に苦痛でした。
そのため、フォルダの上位階層に移動した場合は、移動前のフォルダが画面の中央の位置に来る座標までスクロールさせるようにしました。これで比較的操作しやすくなったと思います。

Bluetoothで再生時間が正しく表示されない問題修正

AVRCPで再生タイトル等を表示させる事の出来るBluetooth機器、具体的にはカーナビやAVアンプ等になりますが、これらにおいて音楽の再生時間が正しく追従しないという問題がありましたので、そのバグ修正です。
ちなみに、Bluetooth機器に表示される現在の再生時間は随時送信しているわけではなく、特定のタイミング(シーク時など)で再生時間を送信し、あとは機器側が勝手にカウントアップしていくようになっています。

共有メディアの生成キュー追加でエラーとなる問題修正

これはユーザ様からの報告です。
外部のアプリから共有されたメディアの再生キュー登録に失敗する問題がありました。これは、いつの間にか紛れ込んだバグによるものでした。

非同期歌詞をループさせるとスクロールが追従しない問題修正

非同期歌詞をループさせた際、ループ位置が先頭に戻らない問題があったため、修正しました。

Ver. 2.7.1

Android 4.2以前の機種でエラーが発生する問題を修正しました

今回のパラメータ機能の追加に伴い、内部的な処理を大きく見直しました。その際、データベース読込み処理にも手を加えたのですが、その変更の一つがちょっと不味かったため、Android 4.2以前のAndroidでDB読込ができなくなるという問題が発生していました。

原因を簡単に説明します。AndroidのAPIに引数として与えられたURIがどのURIに属するかを判定するための「UriMatcher」というクラスがあります。ここには事前にURIのパスを登録する必要があります。このパスの先頭に「/」は不要なのですが、Android 4.4以降だと先頭に「/」が入っても自動的に省いてくれているようです。ところがそれより前のAndroidでは、「/」が挿入されているとURIが一致しなくなり、URI不一致エラーとなってしまいました。
今回、開発でAndroid 4.4、5.1、6.0で確認はしていたのですが、それより前のAndroidでの動作を確認していなかったため、発見が遅れてしまいました。

プレイリストが存在しない場合のエラーを修正しました

プレイリストが存在しない場合に、再生キューメニューの「プレイリスト操作」を開こうとするとエラーメッセージが表示されていたため、修正しました。まぁ、修正しても空のダイアログが表示されるだけなのですが…。