どうやら例外はスローされないため、ストリーミング オーディオ コンテンツのバッファリング中にエラーを認識できます。たとえば、ルーターを切断すると、アプリはずっとバッファリングを試み続けます。再接続すると、バッファリングが完了し、1 分以上切断された後でも続行されます。
したがって、問題は、それを問題と見なさずに、ユーザーをそこに長時間座らせることができないことです。Android メディア プレーヤーのバッファリングの問題を検出する適切な方法は何ですか?
タイムアウトにタイマーを使用することを考えています。おそらく 15 秒から始めます (最悪のケースである 5kbps 接続をテストしたプロキシを使用して、6 ~ 10 秒で再生を開始できたので、15 秒が妥当なタイムアウト時間になると思います)。これは良い計画のように聞こえますか? その場合、バッファの試行ごとに新しいタイマーを作成する必要がありますか、それとも再生サービスの有効期間を通じて同じタイマーを維持する必要がありますか?
だから基本的に私は2つの質問をしています:
1) バッファに問題があるかどうかを検出する適切な方法は何ですか? 私が見落としているリスナーはいますか?もちろん、テストで起動しない MediaPlayer.OnErrorListener を試しました。私の結論は、バッファリング エラーを検出するにはタイムアウトが必要であるということです。
2) 1 番目の質問が正しければ、タイマーを使用する適切な方法は何ですか? バッファ試行ごとに作成するか、同じものを再利用しますか? EDITまた、タイマー onBufferUpdate を再起動する (またはキャンセルして新しいものを作成する) 必要がありますか? onBufferUpdate リスナーを使用すると、一部のデータが戻ってくることを知っているはずなので、それでタイマーをリセットする必要があります。