Android - 检测流的结束而不是MediaPlayer中的连接错误

时间:2012-11-08 14:12:56

标签: java android android-mediaplayer

在收听1小时mp3流时,如果用户失去连接(或从WIFI更改为3G并且连接“Drops”一秒钟),我们注意到MediaPlayer继续播放缓冲的内容。一旦它用完了缓冲的内容,如果它没有完成到文件的末尾,我会认为它会触发一个Error事件,而是将状态更改为PLAYBACK_COMPLETE。我们如何判断播放结束是由于连接错误(连接丢失)还是实际播放完成?我唯一能想到的是当MediaPlayer将状态更改为PLAYBACK_COMPLETE时检查currentPostion与totalDuration。还有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

如果它没有触发onError()事件,您可以尝试注册OnBufferingUpdateListener并检查缓冲百分比是否达到100%。如果连接丢失,则在播放完成时,百分比将小于100%。

答案 1 :(得分:2)

很难知道这一点。我认为你现在的位置& totalDuration方法很棒,但我建议你也要监听设备的网络状态。如果客户端导致服务器连接中断,您可以通过这种方式知道。 This可能有帮助

答案 2 :(得分:2)

您必须确保已实现OnErrorListener,并且在此onError方法中,您必须返回true值。如果从此方法返回false值,但在此情况下出现错误,则媒体播放器将触发OnCompletionListener onCompletion方法。