2

1 時間の mp3 ストリームを聞いているときに、ユーザーが接続を失った場合 (または WIFI から 3G に変更し、接続が 1 秒間「ドロップ」した場合)、MediaPlayer がバッファリングしたコンテンツを再生し続けることに気付きました。バッファリングされたコンテンツがなくなると、ファイルの最後まで完了していない場合、エラー イベントが発生すると想定していましたが、代わりに状態を PLAYBACK_COMPLETE に変更します。再生の終了が接続のエラー (接続の切断) によるものか、実際の再生の完了によるものかをどのように判断できますか? 私が思いついた唯一のことは、MediaPlayer の状態が PLAYBACK_COMPLETE に変わったときに currentPostion と totalDuration をチェックすることです。より良い方法はありますか?

4

3 に答える 3

2

実装されていることを確認する必要があり、OnErrorListenerこのonErrorメソッド内でtrue値を返す必要があります。このメソッドからfalse値を返したが、その場合にエラーが発生した場合、メディアプレーヤーはOnCompletionListeneronCompletionメソッドを起動します。

于 2013-01-16T22:30:52.050 に答える
2

イベントが発生しなかった場合はonError()、登録を試みOnBufferingUpdateListenerて、バッファリングの割合が 100% に達するかどうかを確認できます。接続が失われた場合、再生完了時のパーセンテージは 100% 未満になります。

于 2013-01-10T16:27:12.627 に答える
2

これを知るのは本当に難しいです。currentPosition と totalDuration のアプローチは素晴らしいと思いますが、デバイスのネットワーク状態もリッスンすることをお勧めします。クライアントが原因でサーバーへの接続が切断された場合、この方法でそれを知ることができます。これは役立つかもしれません

于 2013-01-16T07:56:34.100 に答える