2014-12-28 Ver. 1.8.5
– M3Uファイルプレイリストの出力対応
– 歌詞のMIME Type表示
– プロパティのメディア、アルバムアート、歌詞ファイルに「開く」アクション追加
– 検索画面の「ストレージ」タブを外部アプリから開く機能追加(プロパティのフォルダパスを開くアクションに対応)
– Viewタブにボタンを表示させた状態で歌詞がスクロールできない問題修正
– 歌詞のMIME Type表示
– プロパティのメディア、アルバムアート、歌詞ファイルに「開く」アクション追加
– 検索画面の「ストレージ」タブを外部アプリから開く機能追加(プロパティのフォルダパスを開くアクションに対応)
– Viewタブにボタンを表示させた状態で歌詞がスクロールできない問題修正
M3Uファイルプレイリストの出力対応
プレイリストの保存の際、M3Uファイルへ保存できるようにしました。保存時に、プレイリスト保存種別の選択ダイアログが表示されます。
従来、プレイリストの保存を行う場合はAndroid標準の共通メディアデータベースへ保存されていました。これはAndroid標準で用意されているため、多くのプレイヤーが読み込みに対応しています。ただし、当然のことながら、端末を変更するとプレイリストの読込みができなくなります。また、何らかの事情によりデータベースが初期化されると、プレイリストも一緒に削除されるため、同様に読込ができなくなります。
その問題への対応として、M3U形式のプレイリストファイルを書き出せるようにしました。M3UファイルはAndroidでも標準で対応しているため、別端末へ移動したり、DBを削除したりしても、Androidによって自動的に再スキャンされ、プレイリストとして再登録されます。
注意点としては、M3Uファイルはプレイリストの名前としてファイル名が利用されるため、プレイリストの名前には改行やファイル名に使用できない文字が使えないといった制約があります。
保存時に保存先のファイルパスの他、「相対パス」と「絶対パス」の2種類を選択します。これは、M3Uファイル内に記録するメディアファイルのパスを、相対パスで保存するか、絶対パスで保存するかの選択です。「相対パス」の場合、メディアファイルとプレイリストの保存場所を変更しなければ、端末が変わってもそのままプレイリストが再読込されますが、M3Uファイルの保存位置を変更すると読み込めなくなります。一方の「絶対パス」は、M3Uファイルの場所を変更してもプレイリストの再読込を行う事ができますが、端末が変わると読み込めなくなる可能性が高いです。基本的には、相対パスを推奨します。
歌詞のMIME Type表示
読み込める歌詞ファイルの種類が増えたので、歌詞ファイルにもMIME Typeを表示するようにしました。歌詞ファイルに対して、「共有」や「開く」のアクションを実行する際に影響します。
プロパティのメディア、アルバムアート、歌詞ファイルに「開く」アクション追加
従来、メディア、アルバムアート、歌詞ファイルに対して「共有」アクションを実行して外部アプリにファイルを渡すことができましたが、それ以外に「開く」アクションを追加しました。同様に外部アプリにファイルを渡すのですが、アクションが異なります。「開く」の方は、Windowsでいうダブルクリックでファイルを開くようなアクションで、「共有」はメールへのファイル添付を行う場合等に利用します。
やってることは似たようなものですが、Androidではこれらは別物として扱われます。
検索画面の「ストレージ」タブを外部アプリから開く機能追加(プロパティのフォルダパスを開くアクションに対応)
Medolyに対して「フォルダを開く」といったアクションが実行された場合、指定したフォルダを検索画面のストレージタブで開けるようにしました。受け取れるMIME Typeは「resource/folder」「x-directory/normal」「inode/directory」等です。なお、「resource/folder」他のファイラーアプリでも対応してるため、これが標準と考えています。
プロパティタブに表示された「フォルダパス」の「開く」アクションを実行しても受け取ることができます。現在開いてるメディアファイルのフォルダを開きたい場合にご利用ください。
Viewタブにボタンを表示させた状態で歌詞がスクロールできない問題修正
フリック操作対応時にタップ処理の対応漏れがあったため、修正しました。
2015-01-07 Ver. 1.8.6
– 標準のプレイリストの保存種別を保持する設定追加
– SYLT歌詞の読込処理を修正 (ISO-8859-1対応)
– 歌詞のMIMEタイプ取得処理修正
– M3Uファイル保存時にプレイリスト名を更新するよう修正
– SYLT歌詞の読込処理を修正 (ISO-8859-1対応)
– 歌詞のMIMEタイプ取得処理修正
– M3Uファイル保存時にプレイリスト名を更新するよう修正
標準のプレイリストの保存種別を保持する設定追加
プレイリストの保存種別を選択する際、標準の保存種別(Android標準データベース or M3Uファイル)を決定できるようにしました。これを使う人は、毎回保存種別を選択するような使い方はしないと思われますので…。なお、設定画面よりダイアログを復活させることができます。
SYLT歌詞の読込処理を修正 (ISO-8859-1対応)
これは、ユーザー様からの修正要望です。ID3v2の同期歌詞タグ、SYLTに保存された歌詞の読み取り処理を修正しました。
従来もSYLT読み込み処理はできていたのですが、文字コードがUNICODE(UTF-16)限定でした。というのも、SYLTの書込みツールとして利用していたのが「MiniLyrics」だったためです。このツールは、SYLTの書き込みはUTF-16で行われています。
今回は、それに加えてISO-8859-1への対応を行いました。さらに言うと、一旦バイナリ配列に落とし込んだあとで文字コード判定処理を行っていますので、Shift_JISが書かれていても読めます。文字コード判定に失敗さえしなえれば、大抵の文字コードは大丈夫だと思います、多分。とりあえず、「K5 Lyrics Editor」で作成したSYLTファイルで読込を確認しています。
ともかく、これでSYLTの読み込みはほぼ問題なくなると思います。ちなみに、SYLTで検索すると「SYLT Editor」というツールが出てきますが、 これはタグ情報が破壊されてSYLT情報どころかタグ情報その物が読み込めなくなるので、使用しないで下さい。
なお、 SYLTの仕様は以下のサイトにあります。
ここで少しオマケ話。
この仕様を見ると、歌詞はテキストの間に「$00 xx xx」(xx xx = 再生時間)という同期識別子が挟まっている形式となっています。また、改行は「$0A」で表現されます。ところが、多くのSYLT対応プレイヤーでは、同期識別子の出現と同時に、テキストが改行される挙動となっており、事実上標準の動作となっています。(そのため、行内の文字単位で同期させることができません。)
本プレイヤーでは、基本的には同様に同期識別子で改行する動作に合わせています。…が、同期識別子の前後に改行文字(LF, CR, CR+LF) が一つでも出現すると、本来のSYLT動作が期待されているものと判断し、同期識別子での改行を行わず、改行文字による改行のみを行うようにしています(行の途中での出現は無効となります)。
まぁ、そんな細かい動作に拘っても、使う人がいないので意味が無いのですが、本来の動作に拘ってみたかったので、そんな実装をしてみました。
歌詞のMIMEタイプ取得処理修正
1.8.5で作成した歌詞のMIME Type読み込み処理に問題があったため、修正しました。
M3Uファイル保存時にプレイリスト名を更新するよう修正
M3Uファイルを保存した際に、プレイリスト名が更新されていなかったため、保存するように修正しました。