Medoly 1.0.2 リリース

Medolyのバージョン1.0.2をリリースしました。今回は以下のような変更があります。

メディアが再生できない問題を修正

音楽ファイルのタグ(メタ情報)の読込み失敗時に、再生その物がに失敗する問題がありました。失敗時は、メタデータの読込みをせずに再生を開始します。こんな所のエラー処理が杜撰だったのは、自分でも流石にどうかと思います。

再生に失敗したメディアが再生キューに存在する際の問題を修正

再生できないメディアが再生キューに登録されていた場合、再生キューの順序制御や停止に問題が発生するので、内部の処理を色々見直しました。 これに伴い、再生キューに関わる色々な問題が修正されています。
ただ、自分が再生キューの状態遷移をきちんと把握しきれてないため、まだちょっと怪しいかもしれません…。

再生失敗したメディアを再生キューから除外するオプションを追加

再生キューの問題に絡み、再生失敗時に再生に失敗したメディアを自動的に再生キューから削除します。
標準では削除しませんが、次に再生順が来た時は自動的に読み飛ばします(再生キューを直接タップすれば再度再生します)。なお、これは再生キューから外れると解除されます。また、アプリを起動した際に再生キューを再読込する場合にも解除されます。(要は、再生キューに保存されたフラグがクリアされた場合。)

再生済み状態が保存されない問題

再生キューの再生済み状態が保存されない場合があったので修正しました。これは、アプリを2回再起動すると発生します。
要因は、起動中の意図しないタイミングで再生済みがクリアされた状態で設定が保存されていたためです。対策としては、起動時に再生済み状態を保存するように修正しました。また、これに伴い全体的に設定の保存タイミングを調整しました。

再生位置を保存

再生位置を1秒毎に保存し、次回起動時に再生位置のリジュームを行うようにしました。今までも、画面を閉じた際や停止時に再生位置を保存していたのですが、これだとバックグラウンド再生時に全く保存されるタイミングが無いという…。適当に実装してたものですが、きちんとレジュームできるように作り直し。

再生キューのスクロールが中途半端に終わる問題修正

再生キューのスクロール量が多いと、最後まで完全にスクロールされない場合がありました。これは、AndroidでsmoothScrollToPositionFromTopを利用すると発生する場合があるそうです。なお、設定でアニメーションを無効にすると、setSelectionFromTopを使用するので、この影響はありません。

Issue 36062 – android – AbsListView.smoothScrollToPositionFromTop does not scroll correctly when position is the next visible item – Android Open Source Project – Issue Tracker – Google Project Hosting
listview – smoothScrollToPosition after notifyDataSetChanged not working in android – Stack Overflow
listview – Android smoothScrollTo not invoking onScrollStateChanged – Stack Overflow

原因はAndroid側の問題のようで、対応策としてはイベントで再スクロールさせています。ただ、これでも、スクロールに失敗したり、スクロールが連続して発生するために妙な動きをする場合があるので、少し様子を見てみます。これがダメなようならアニメーションを完全にカットしてsetSelectionFromTopのみに絞った方が良いかもししれません。個人的に、スクロールアニメーションは、上/下のスクロールが視覚的に認識しやすいので、あまり無くしたくはないのですが…。
これは、将来的なAndroidのバージョンで治る可能性もあります。

自動スクロール設定をONにしていると、項目削除時にスクロールしてしまう問題修正

再生キューを編集モードにした上で、キュー項目を削除すると、選択中メディアに自動的にスクロールする問題を修正しました。
再生キューの内容に変化があった場合に、全てスクロールする処理になっていたため、項目削除時にもスクロールが発生していました。これに対し、スクロールする場所を個別に指定して、発生タイミングを限定しました。

アクションバーのタイトルやアーティストが null になる問題修正

…単にnullチェックを怠っていただけです。タイトルがnullの場合はファイル名を表示、アーティストがnullの場合は何も表示しないように変更しました。

メール送信機能を無効化

元々、問題発生時にエラーをメールで送信してもらう機能をつけていたのですが、Androidアプリには標準でエラーレポート機能が備わっているため、不要なので削除しました。
…単純に標準のエラーレポート機能を知らなかっただけです。初めてアプリ作ったので、この辺の知識が足りてませんでした。すいません…。
ただ、開発用のデバックビルドでは動作するようにしています。開発用なので、普通の人の目に触れることはありません。
なお、実際にエラー発生時はエラーレポートを送信していただけると非常に助かります。

実装してたエラーレポート機能

検索条件の見直し

検索時に、タイトル項目から再検索すると検索結果が正しく反映されない問題を修正しました。

再生停止時に、通知アイコンを表示しないオプションを追加

個人的には、再生停止時に通知バーから再呼び出しが出来るので便利なのですが、鬱陶しいと感じる場合もあると思うので、切り替えられるようにオプションに追加しました。

その他、諸々の修正をしてますが、細かいので省略。というか、忘れました。


今回はそんな感じで。
設定項目を多少いじってるので、設定画面の設定項目も増え画面も間延びして不格好なのですが、余力があればもう少し整理します…。

追記

設定画面が開けない問題があることが分かったので、修正しました…。申し訳ありません。
現在、Ver. 1.0.3となります。

さらに追記

ファイル読込みがエラーとなる問題と、再生順ボタンを押すと落ちる問題を修正しました。
ハッキリ言うと、デバッグ用コードの消し忘れです…。 すいません。