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


2014-12-22

Medoly Ver. 1.8.0

1ヶ月ぶりぐらいのバージョンアップ。

2014-12-22 Ver. 1.8.0
- ピンチイン・ピンチアウトによる画面表示サイズ変更の追加
- スワイプ操作による画面切換の追加
- 音声フォーカスの一時喪失の処理が誤っていた問題修正


ピンチイン・ピンチアウトによる画面表示サイズ変更の追加


これはユーザ様からの要望です。
メイン画面のタブ枠内で、縦方向のピンチアウト・ピンチイン操作を行うと、タブの表示領域を拡大・縮小します。以前の設定オプションの表示拡大を拡張し、段階的に出来るようにした形です。
Android画面の、上方向のステータスバー及び下方向のナビゲーションバーまで非表示になります。なお、Android 4.4より前のバージョンではナビゲーションバーを非表示にしても、画面をタップするとナビゲーションバーは復活しますが、これは仕様です。また、画面を横した場合はナビゲーションバーが横になりますが、その場合も操作は変わらず下方向の操作となります。…一々操作を切り替えるのは、作る側も操作する側も面倒臭いですから。

なお、このピンチイン・ピンチアウト動作については少し変わった動作をします。2本以上タップした状態で、上側の指を上方向に動かすと、上側のアクションバー及びステータスバーが非表示になり、下側の指を下方向に動かすと、下側のGUI及びナビゲーションバーが非表示になります。非表示になる順番を以下の図に示します。

ピンチズームで拡大・縮小する順序



ちなみに、最大まで拡大すると、以下のような感じになります。





スワイプ操作による画面切換の追加


これは、上記のピンチズーム動作の追加に伴うもので、メイン画面タブ内をスワイプすると、タブの切換が行われるようになりました。これは、ピンチズームで画面を最大まで引き伸ばすとタブが隠れるため、その際にタブ切換が行えるようにする救済措置的な意味があります。
…実はこのスワイプ操作、最初の公開前の開発段階で実装するつもりではいたのですが、作り方がよく分からず後回しにした経緯があり、やっと実装できたという感じです。実際、スワイプやスクロール、クリック、ピンチズームといった各種操作を細かく制御する必要があり、ちょっと難しかったのですが、何とかそれっぽく動くようにはできたと思います。

なお、この実装にはAndroidのサポートライブラリが必要だったため、このバージョンより「android-support-v13.jar」を追加しています。そのため、実行APKのサイズが350KBほど増加しています。
今まで使ってなかったのかと言われそうですが、使わなくてもさほど困らなかったもので。そもそも、どうしてViewPagerクラスがサポートライブラリにしか含まれていないのか、その辺の理由がよく分かりません。

余談ですが、スワイプ操作ができるようになった事で、何か凄くスマートフォンアプリっぽくなったなぁ、と個人的に思ってます。今までは何となく、Windowsアプリケーションの延長線ぐらいの感覚だったのですが。


音声フォーカスの一時喪失の処理が誤っていた問題修正


アプリの標準状態で、他のアプリで一時的な音声が発生した場合、例えばメール通知やナビゲーション音声が発生した場合、音楽再生が中断していたと思いますが、これはバグでした。本来、一時的な音声フォーカスの喪失が発生した場合、音量を下げる処理を入れるつもりだったのですが、これが永続的な音声フォーカスの喪失の処理となってしまっていました。
そのため、今までの状態はメールの通知等で音楽が中断される状態となっていたと思いますが、これが音量を下げるようになりました。


その他


現在、アプリに別の処理を組み込んでいます。実はもう9割ぐらい実装済みなのですが、公開はもう少し先になると思います。とりあえず現在は埋め殺し状態です。現状でも、別途アプリを入れると動くようになりますが…。
その辺の兼ね合いでバグが発生する可能性もありますが、問題があれば報告していただけると幸いです。


2014-12-09

Medolyの仕様書

1週年なので小話を一つ。

Medolyには仕様書があります、一応。作り始める前に、イメージを固めるために、画面のイメージを描いてみたものです。描いた時期は多分、2013年の8月頃だと思います。






…仕様書です。仕様書ですったら仕様書です。
見ての通り、適当な代物です。ちなみに、その時手元にあったやや広めの付箋紙に描いてあります。1枚目はメイン画面(下)と検索画面(上)、2枚目は検索画面の検索欄です。この時点で大体今のアプリのイメージは固まってました。
当時は検索画面のタブを下側に置くつもりでいたと記憶しています。
あと文字が読めないので分からないと思いますが、この時点ではメイン画面の再生キューが右側のタブ、プロパティが左側のタブになってます。色々あって左右逆転して今の形になってます。UIの設計は色々考えながら今の形になっているのですが、時間があればその辺もここで書いてみたいと思ってます。

そんな感じで、1周年の小話でした。

Medoly 1周年

Medolyは2013/12/8にVer.1.0がリリースされたので、昨日で公開から丁度1年経ちました。


Androidで始めて作成したアプリだったので、1年前のリリース時はかなり色々問題がありましたが、この1年で機能追加やら改善やらで大分自分の理想 のアプリに近づいてきたように思います。なお、現在のバージョンは1.7.6。内部的なバージョンコードは50で、1年間で49回バージョンアップさせて います。



お使い頂いてる方には何となく分かるかと思いますが、とにかく歌詞の表示に注力しています。理由は、そういう機能を重視したアプリがさっぱり見られないからです。無いなら自分で作ってしまおう、というのが開発を始めた動機だったりします。

近年、音楽の販売はどんどんCD販売からネットワーク販売に移行していますが、CDは必ずジャケット等に必ず歌詞がついてました。ところが、音楽配信サービスは多くの場合、歌詞がついてない。それが当たり前になっている。歌詞を見たいなら、広告がベタベタ貼ってあって、コピー&ペーストも出来ない歌詞サイトとやらを利用することになります。

もうアホかとバカかと。なんでそれで満足してんの?自分で買った曲の歌詞ぐらい自由に利用させろ。そもそも、最初から従来の歌詞カードの代用になるデータを寄越せよ。ってのが個人的な本音です。

そういう不満タラタラな状態だったのですが、以前より歌詞データの仕様については色々調べていたこともあり、とりあえずそれを実現可能な形にしてみたのがMedolyです。多分、現状Google Playストアにあるどんな音楽プレイヤーよりも対応してる歌詞の種類は多いと思います。あと、ライブラリ依存ですが文字コード判定もそこそこ高い精度でできていると思うので、英語しか出せないようなアプリが多い中、比較的多くの言語で利用できると思います。要するに、言語・種別問わず多くの歌詞が表示できるのではないかと思います。

そんなこんなで、本アプリはまだまだ色々追加したい機能や改善したい部分が多数あるので、これからものんびり開発を続けていきたいと思います。もしご意見・ご要望等ありましたら、遠慮せずに連絡いただけると嬉しいです。

ちなみに、現状で考えてる追加機能は、
  • プラグインによる機能追加
  • 歌詞の表示レイアウト調整
  • プレイリストのエクスポート
など。もう少し色々ありますが、大きなところはそんな所です。
プラグインは、歌詞やアルバムアートの自動取得等の機能も込みで。その辺はまだまだ先の話ですが。どう実装したものかと手探りなところがありますが、温かい目で見て頂けると幸いです。

そんなこんなで、これからもよろしくお願いします。

2014-11-25

Medoly Ver. 1.7.5, 1.7.6

2014-11-02 Ver. 1.7.5
- MP3 内蔵歌詞 Lyrics3 v1, Lyrics3 v2 形式対応
- 以下の外部字幕ファイル対応
 * SRT (SubRip) フォーマット [.srt]
 * STL (Spruce subtitle) フォーマット [.stl]
 * SCC (Scenarist Closed Caption) フォーマット [.scc]
 * SSA/ASS (SubStation Alpha) フォーマット [.ssa/.ass]
 * TTML (Timed Text Markup Language) フォーマット [.xml]
- プロパティ情報のファイルパスをフォルダとファイルに分割
- フォルダの共有を追加

MP3 内蔵歌詞 Lyrics3 v1, Lyrics3 v2 形式対応


MP3は規格的に古い事もあり、長い歴史の中でいくつものタグ種別があります。
歌詞の内蔵方法にもいくつかの種類があり、主に以下のようなものがあります
・ID3v2 USLT
・ID3v2 SYLT
・Lyrics3 (Version1, Version2)

USLTは非同期歌詞を保存するタグです。単純なテキストが格納され、MP3で「内蔵非同期歌詞」と呼ばれるのはこれです。この歌詞タイプの場合、比較的多くのプレイヤーで読み取りができると思います。
SYLTは同期歌詞を保存するタグです。歌詞は単純なテキストではなく、テキストとタイムコードが交互に登場するような形となっています(参考: id3v2.3.0 - ID3.org )。この内容を独自に解析しているので、表示結果が怪しいところがあるかもしれません。Windows Media Playerのバージョンによっては、これが読み取れる場合があるようです。
Lyrics3は、ID3v1、ID3v2とも独立したタグです。名前の通り歌詞が保存されますが、タイトルやアーティスト情報も保存できるようです。Version1とVersion2がありますが、Version1は古い規格なので、Version2さえ使っておけば良いかと思います。歌詞はテキストで作られますが、その内容はLRCファイルと同一のフォーマットとなるようです。というか、LRCファイルがLyrics3の内容を外出ししているのでしょうか(その辺の経緯はイマイチ分かってません)。Medoly内部でも、Lyrics3の内容をLRCファイルの解析処理にそのまま流して処理しています。いくつかの同期歌詞対応ソフトは、この歌詞を利用しています。

これらは以前からずっと対応しようと思ってましたが、ようやく対応させることができました。これで、大体の内蔵歌詞は読み取れるようになったと思います。読み取り結果に怪しい部分があるかもしれませんが、その際は連絡頂けると幸いです。

なお、これを作っていて分かったのですが、海外のアプリは概ね「文字コード?何それ美味しいの?」レベルの対応しかしていないようです。そんなわけで、Shift_JISで歌詞を保存した場合、まともに表示できるアプリは非常に限られてくると思います。歌詞やタグをMP3に保存する場合は、Unicodeを用いるようにしましょう。Medolyはなにぶん日本人が作ってますので、Shift_JISでも何とかなるかと思いますが。

余談ですが、カラオケタグについて調べてるうちに、ルビの規格について考えてる記述を見つけました。余力があれば、この辺も何とかしてみたいところ。

タイムタグ規格ルビ拡張規格 [翔星 Be ランド| BeOS 特集]



以下の外部字幕ファイル対応


世の中には歌詞ファイル以外に、動画の字幕データを歌詞として用いる文化があるようです。私はほとんど見たこと無いですが。とりあえず「Mediaplayer for lyrics」に名前負けしないよう対応させてみました。対応に当たり、以下のライブラリを利用しています。

JDaren/subtitleConverter · GitHub

一応こういう事をやってる方もいるようです。

春日 - カラオケ字幕制作ソフト プロジェクト日本語トップページ - SourceForge.JP

これも余談ですが、対応させたフォーマットのうち、TTMLフォーマットというXMLファイルがあります。w3cで策定された、由緒正しいフォーマットです。

Timed Text Markup Language 1 (TTML1) (Second Edition)

これは字幕等の時間に合わてテキストを表示させたりするためのものですが、歌詞データにも利用できるようです。今は文字読み取りぐらいしかできませんが、文字修飾等も定義しやすいため、時間があればこの辺を色々弄り回して色々表示できるようにしてみたいところ。


プロパティ情報のファイルパスをフォルダとファイルに分割


プロパティリストで「ファイルパス」となっていた所を、「フォルダパス」と「ファイル名」に分割しました。理由は、そちらの方が利用しやすいからです。
主な利用は、次の項目を参照。

フォルダの共有を追加


上記で追加したフォルダパスについて「共有」アクションを行うことができます。対応するアプリに共有すると、該当のフォルダパスを閲覧することができます。現在対応を確認しているアプリは、「ES ファイルエクスプローラー 」と、「Solid Explorer File Manager 」です。
フォルダを共有する際、MIME Typeに「resource/folder」を設定しています。上記以外にこのMIME Typeに対応したアプリであれば、共有を受け取る事ができるはずです。

余談ですが RFC2425 によると、フォルダ(ディレクトリ)のMIME Typeは「text/directory」らしいのですが、これを設定しても上記のアプリは受け取ってくれませんでした。Linuxだと「inode/directory」の模様。Androidだと、特定の機能ディレクトリを開くために「vnd.android.cursor.dir/*」というMIME Typeを利用するようですが、ストレージフォルダを開くための使い方がよく分かりません。

上記のように、正しいディレクトリのMIME Typeが特定できなかったため、設定からMIME Typeの変更ができるようにしています。

2014-11-20 Ver. 1.7.6

- プレイリストのダイアログ修正 (一部機種で開けない問題に恐らく対応)
- スリープ復帰時にダイアログのボタンを押すとエラーとなる問題の対応追加
- 再生キューのドラッグ&ドロップ処理修正
- SDカード未認識時のエラー処理修正


プレイリストのダイアログ修正 (一部機種で開けない問題に恐らく対応)


これは、アプリのエラーレポートにあがっていました。
プレイリストを開こうとすると落ちるとのこと。エラー内容を見ると、どうもプレイリストの一覧を開く時にエラーが発生しているような様子なのですが、私の端末では発生しないため、どうも特定の機種で発生する事象のような感じです。調べてみると、同様の事象がヒット。

技なれど波高し 【解決】android ListViewのonTouchにてNullPointerException

要するに、きちんとリストを実装しなさい…と。確かに、ここについては標準のリストをそのまま使っており、特別な実装を何もしていなかった。そんなわけで、ここもきちんと実装を行うように修正。

ただ、この問題についてはこちらで修正されたかどうかの確認ができないため、このエラー報告をあげて頂いた SoftBank 201M (MOTOROLA RAZR M) を利用されている方、 もしエラーが直ったという場合は御一報いただけると幸いです。もし、まだ直っていない場合は再度エラーレポートをあげていただけると助かります。


追記

報告された方から連絡があり、プレイリストはきちんと開けたきちんと読み込めたそうです。
というわけで、リストはAndroidのデフォルトのやり方( android.R.layout.simple_list_item_1 等を使うやり方 )でやると危険なようです。アダプタのgetViewをオーバーライドして、自分で処理を書くようにした方が無難かと思います。


スリープ復帰時にダイアログのボタンを押すとエラーとなる問題の対応追加


これはAndroidの仕様なのですが、ダイアログを開きっぱなしの状態でスリープに入って、復帰した際に、ダイアログ上に保持していた情報が欠落してしまいます。その状態で処理を続けると、NullPointerException等のエラーが発生します。
正攻法としては、そうならないようにダイアログを作るのが筋なのですが、正直物凄く面倒臭いので、「情報が欠落したらその時はメッセージ出すから再操作してくれ」というスタンスで作ってます。その処理に漏れがあったため、エラーが発生していました。


再生キューのドラッグ&ドロップ処理修正


再生キューを「編集モード」にした際、順番を入れ替える事ができますが、ここの描画更新処理がおかしかったので修正しました。単純に、ライブラリの使い方を間違ってました。

SDカード未認識時のエラー処理修正


SDカードがアンマウントされた状態でエラーが発生すると、エラーを繰り返してしまい、物凄い勢いでバッテリーが消費されていくという最悪のバグがあったので、修正しました。…多分。
以前直したはずなのですが、ギャップレス再生対応した際に復活してしまった模様です。