2015-01-28

Medoly Ver. 1.9.0

今回は結構大きな変更です。

2015-01-26 Ver. 1.9.0

- メイン画面にスタイル変更ダイアログ追加
  (VIEWタブのメニューまたは画面長押しで表示)
- 歌詞レイアウト変更機能追加
- 歌詞を自動改行しない設定追加
- 表示スタイル及び画面回転の設定項目をメイン画面に移動
- エラーログのメール送信機能を復活
- ダイアログが2重に表示される問題修正
- プレイリスト名にドットが含まれていた際にm3uファイル保存できない問題修正
- 選択再生キューが無い状態で再生ボタンを押しても再生が始まらない問題修正
- シーク位置が保存されない場合がある問題修正



メイン画面にスタイル変更ダイアログ追加 (VIEWタブのメニューまたは画面長押しで表示)
歌詞レイアウト変更機能追加


メイン画面のVIEWタブメニュー、または表示タブスクリーンの長押しで、スタイル変更ダイアログを表示するようにしました。





これが何をするものかと言うと、表示タブ内の表示スタイルを設定します。ダイアログは2つの画面から構成され、「レイアウト」と「外観」で分かれます。

「レイアウト」は、アルバムアートと歌詞の表示位置を設定します。中央の十字のボタンで、アルバムアートと歌詞の相対位置を設定します。従来と同様にアルバムアートと歌詞をオーバーレイ表示させるか、もしくは上下左右の何れかの位置を設定します。シークバーを動かすと、アルバムアートと歌詞の表示割合を変更することができます(オーバーレイ表示除く)。オーバーレイ表示の場合は、シークバーでアルバムアートの表示の濃さを変更することができます。「可能な場合は最大化」のチェックを入れると、歌詞・アルバムアートの何れか一方しか表示できない場合、表示を最大化します。
このレイアウト設定は、縦方向画面と横方向画面で別設定となります。画面を縦にした状態でダイアログを表示させた場合は縦方向の設定、横にした状態で表示させた場合は横方向の設定を行うことができます。

「外観」は、従来設定画面にあった「表示スタイル」の内容そのものです(一部項目が変更されてます)。メイン画面に移動させることで、表示内容を確認しながら設定変更を行うことができるようにしました。
なお、新旧で設定の互換性が保持できなかったため、バージョンアップに伴い設定は一旦クリアされます。 大変申し訳ありません。

以前のバージョンアップ(Ver. 1.8.0)でスクリーンを画面一杯まで広げられるようにしたもの、余白を持て余していて見栄えがあまり良くありませんでした。今回は、この余白を上手く活用できるレイアウトで表示できるよう、新規に開発してみた次第です。
設定が多くて分かりにくいのですが、とりあえず実験的に置いてみた感じなので、使用しない場合はあまり気にせずにそのままご利用ください。


歌詞を自動改行しない設定追加


スタイル設定ダイアログの「外観」内に追加された設定項目です。
通常の表示では、歌詞が右端で自動的に折り返されますが、これを折り返されないようにします。1行が画面の幅を超えた場合、文字が自動的にスクロールします。この設定は、以下の図ように画面比率の変更と組み合わせて、歌詞を擬似的に1行で表示させるような使い方を想定しています。



ちなみに、歌詞を完全に1行で表示させるような個別の設定を提供する予定はありません。何故なら、本アプリは下記のように2行以上が同時に行がアクティブになるような表示を許容しているからです。そのため、基本的には画面に複数行の歌詞を表示させる事を想定した作りとなっており、今後もこの方針で開発していく予定です。




表示スタイル及び画面回転の設定項目をメイン画面に移動


以前、設定画面にあった画面の向きに関する設定を、表示スタイルダイアログに移動させました(設定項目は一部弄ってますが)。操作性の改善(のつもり)です。
なお、この設定項目は「レイアウト」に配置されていますが、縦画面と横画面で設定が異なるという事はありません。

エラーログのメール送信機能を復活


諸事情により、昔実装されていたエラーログのメール送信機能を復活させました。アプリがエラーで落ちた際、次の起動時にダイアログが表示され、そこからエラーレポートをメールで送信することができます。
まぁ、何か問題があった際に活用していただけるとこちらも助かります。


ダイアログが2重に表示される問題修正


以前から、同じダイアログが2重に表示される問題がありましたが、これを改善しました。
いい加減直さないといけないと思っていたのですが、今回はスタイルダイアログの絡みでようやく着手した次第です。
ちなみに、ダイアログが表示された状態で画面を回転させたり、スリープに入ったりすると、ダイアログが自動的に閉じる処理も追加されています。


プレイリスト名にドットが含まれていた際にm3uファイル保存できない問題修正


ファイル名にドットが含まれたプレイリストが保存に失敗していたため、修正しました。
ご想像の通り、拡張子の処理がおかしかったためです…。

選択再生キューが無い状態で再生ボタンを押しても再生が始まらない問題修正


これは、ギャップレス再生を実装した際に挙動が変わっていたものを修正したものです。細かい挙動の修正です。

シーク位置が保存されない場合がある問題修正


シーク位置が保存されないパターンが結構あったので、シーク位置を保存するタイミングを修正しました。

ダウンロード数が1000を越えた

先日、1/11にMedolyのダウンロード数が1000を越えました。






ダウンロード数が1000を越えると、Google Play上の表記が「500~1,000」となっていたものが、「1,000~5,000」に変わります。Android端末のGoogle Play端末上も表記が以下のように変わります。
 
Android端末上の表記

 ちなみに、ここでいうダウンロード数というのはユーザベースの総ダウンロード数となります。1つのアカウントが1度でもダウンロードすると1回にカウントされるはずです。別端末にアプリをインストールしても、アプリをアンインストールしてもカウントは変わらず、カウントが減ることはない…という認識です。
ちなみに、それ以外に現在インストール中のユーザ数、現在インストール中の端末数などが見られます。






公開してからおおよそ1年ぐらいで1000まで来ましたが、次の基準値の5000になるのはいつになることやら…という感じです。個人的には、あと1桁は増やしたいところですが、まぁノンビリやっていきたいと思います。

いつもご利用頂いてる皆様、本当にありがとうございます。今後もよろしくお願いします。
 

2015-01-27

Medoly Ver. 1.8.5, 1.8.6

2014-12-28 Ver. 1.8.5

- M3Uファイルプレイリストの出力対応
- 歌詞の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ファイル保存時にプレイリスト名を更新するよう修正

標準のプレイリストの保存種別を保持する設定追加


プレイリストの保存種別を選択する際、標準の保存種別(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ファイルを保存した際に、プレイリスト名が更新されていなかったため、保存するように修正しました。