Medoly ver.1.0.8

Medoly – Google Play の Android アプリ

すぐに直したい部分だったので、またバージョンアップ…。

修正内容

再生停止状態で電話かかってきた時に、再生が再開されてしまう不具合修正

以前からたまに発生していた不具合。アプリを終了した状態でも、電話着信時に再生が開始されてしまうことがあるという恐怖の問題がありました。必ずしも発生するわけではなく(というか、確率は低い)、発生条件が分からず頭を悩ませていたのですが、ようやく大体の原因を特定。
問題のポイントとしては、電話がかかってきた時に再生を停止させる処理。停止してる状態でこの処理が走ると、エラーが発生することがある。このエラーが起きる条件もよく分かっていない(そもそもAndroidの状態がどうなっているのかきちんと分かってない)のですが、データを全て削除したり、プロセスを終了させた後の起動後等に発生しやすい模様。単純なスリープや終了状態ではなく、他の何かがトリガになってるような気がするのだけれど、これがよく分かってない。
で、このエラーが発生すると、MediaPlayerのonErrorイベントが走る。onErrorイベントが走ると、「次の曲を開く」(エラーの曲を読み飛ばす)という処理が走る。その結果、曲が再生されてしまうという感じの流れ。Ver.1.0.2で再生処理を組み替えたので、その際に発生するようになってしまった模様。
対策としては2つ。まず、イベント発生時に電話の状態をチェック(TelephonyManager#getCallState()) し、アイドル状態でなければ再生させないという処理を追加すること。もう一つは、そもそもこのエラーが起きないようにするように、処理を見直すこと。色々見直してみると、エラーのチェックが甘かった…。
これは、単純に自分の技量不足の問題です…。