Medoly Ver. 1.6.5, 1.6.6, 1.6.7

ここ最近の変更について解説

2014-09-22 Ver. 1.6.5

– ギャップレス再生対応 (Android 4.1 以降)
– メイン画面点灯の設定追加(デフォルトで再生時のみ点灯とする)
– オーディオフォーカス処理の設定追加
– 曲戻し時に再生キューを未再生状態とする(設定で切換可)
– 本バージョンより、 android.permission.WAKE_LOCK パーミッションが追加されています

ギャップレス再生対応 (Android 4.1 以降)

このバージョンから、ギャップレス再生に対応しました。ライブ音源収録CD等の、連続した音楽がトラックで分割されている曲について、切れ目無く再生することができます。対応はAndroid 4.1以降となります。ただし、端末によっては対応されていない場合があります。AndroidのMediaPlayer標準のギャップレス再生方式を使用していますので、他のアプリでギャップレス再生できなければ、本アプリでも出来ないと思います、多分。
ギャップレス再生に対応するに当たり、内部の処理をかなり大きく見直しています。今までは、曲の切換をした際にMediaPlayerオブジェクトに対してファイルをセットし直すという処理を行っていました。今回の変更では、現在再生しているMediaPlayerオブジェクトに加え、次の曲をセットしたMediaPlayerオブジェクトの2種類を用意し、曲の切換時にMediaPlayerオブジェクトを入れ替えるという処理を行っています(入れ替えた時に、更に次のMediaPlayerオブジェクトを作成しています)。
これは、ギャップレス再生に対応する上で必要な変更なのですが、この結果として内部の処理を大幅に見直す必要がありました。
そんなわけで、かなり入念に確認をしたつもりなのですが、今回の変更で問題が発生する可能性は高いです。何かあれば、ご報告頂けると幸いです。
テストに使ってた曲

メイン画面点灯の設定追加(デフォルトで再生時のみ点灯とする)

今まで、メイン画面の点灯にチェックを入れると、メイン画面を表示している時は常に画面が点灯する(消灯しない)動作となっていましたが、これを設定画面で「常に点灯」「再生中のみ点灯」「歌詞表示中のみ点灯」「歌詞再生中のみ点灯」という4種類から選択できるようにしました。デフォルトは「再生中のみ点灯」となります。
これは、点灯状態で携帯を放置すると画面が表示されたままバッテリーを大きく消耗してしまうためです。これにより、電池が尽きてしまう状況に何度か遭遇したため、再生中のみ点灯するオプションを追加した次第。

オーディオフォーカス処理の設定追加

設定画面に、オーディオフォーカス(音声フォーカス)についてのオプションを追加しました(これに伴い、一部設定を削除しました)。オーディオフォーカスとは、アプリが音声についての各種操作を受け付けるために必要な設定です。これは、Android上で動作する何れか一つのアプリが持っており、アプリがオーディオフォーカスを取得すると、別のアプリのオーディオフォーカスが外れる、という動作をします。リモコンのボタンや、ロック画面のコントロールを受け付けるのは、オーディオフォーカスを持つアプリとなります。
今回、本アプリがオーディオフォーカスを取得するタイミングと、オーディオフォーカスが外れた場合の動作についての設定を追加しました。
オーディオフォーカスを取得するタイミングは、「取得しない」「アプリ起動時」「再生開始時」「アプリ起動時&再生開始時」の4種類から選択します。デフォルトは「アプリ起動時」です。「取得しない」とすると、オーディオフォーカスを取得しないためリモコン関係の設定は無効になります。「アプリ起動」とすると、アプリを起動した時にオーディオフォーカスを取得しますが、音楽再生中に別のアプリにフォーカスを奪われると、アプリを再起動するまでリモコン操作を受け付けなくなります。
オーディオフォーカスが外れる場合、一時的に外れる場合と、永続的に外れる場合があり、それぞれについての動作を設定できます。動作は、「再生を停止する」「音量を下げる」「何もしない」の3種類から選択します。それぞれ、メッセージを表示することができます。

曲戻し時に再生キューを未再生状態とする(設定で切換可)

本アプリは、曲を再生すると曲が「再生済」状態となります。従来はこの状態から曲戻しをすると、再生済状態のままとなっていました。今回の変更では、曲戻しをすると未再生状態に戻されます。
この理由は、一度「曲戻し」をした後に「曲送り」をすると、再生済みの曲がスキップされるため、「曲戻し」前の曲には戻る事ができなかったためです。聞きたい曲を探して曲送りを連打する→行きすぎたので曲戻しをする→やっぱり行きすぎた先の曲も聞きたい、という事がしょっちゅうあったので、このような動作に変更しました。


本バージョンより、 android.permission.WAKE_LOCK パーミッションが追加されています

今まで、MediaPlayerオブジェクトに setWakeModeでWakeModeを設定していなかったのですが、今回、PowerManager.PARTIAL_WAKE_LOCK を設定するようにしました。この変更に伴い、android.permission.WAKE_LOCKパーミッションが必要となっています。
正直、これの効果はよく分かっていません。ただ、これが無いと音楽再生中にアプリが中断してしまうことがあるようです(私の環境では発生していないのですが)。再生を維持させるための設定のようなのですが、効果を確認する方法がわかりません。まぁ、おまじないみたいなものと考えています。

2014-09-24 Ver. 1.6.6

– リモート操作が復帰しない場合がある問題修正
– 曲切換時に再生キューがスクロールしない問題修正
– 終了時にメディア状態が保存されない問題修正
– 設定文言一部修正

リモート操作が復帰しない場合がある問題修正

音声フォーカスの取得処理がおかしかったバグの修正です。

曲切換時に再生キューがスクロールしない問題修正

曲が切り替わった際に、再生キューの自動スクロールをしてもスクロールが発生しないバグの修正。ギャップレス再生の対応に伴い、処理を入れ忘れました。

終了時にメディア状態が保存されない問題修正

メニューの「終了」から終了させた場合、メディアの再生位置等が保存されない問題があったので修正。これは既存バグ。

設定文言一部修正    

設定画面の文言を一部修正しています。

2014-09-26 Ver. 1.6.7

– 単体再生時の曲送り・曲戻し動作を修正

単体再生時の曲送り・曲戻し動作を修正

単体再生時、曲送りを押した際に次メディアがあっても「メディアがありません」と言われてしまう問題修正。ギャップレス再生対応に伴うバグです。