在收听1小时mp3流时,如果用户失去连接(或从WIFI更改为3G并且连接“Drops”一秒钟),我们注意到MediaPlayer继续播放缓冲的内容。一旦它用完了缓冲的内容,如果它没有完成到文件的末尾,我会认为它会触发一个Error事件,而是将状态更改为PLAYBACK_COMPLETE。我们如何判断播放结束是由于连接错误(连接丢失)还是实际播放完成?我唯一能想到的是当MediaPlayer将状态更改为PLAYBACK_COMPLETE时检查currentPostion与totalDuration。还有更好的方法吗?
答案 0 :(得分:2)
如果它没有触发onError()
事件,您可以尝试注册OnBufferingUpdateListener
并检查缓冲百分比是否达到100%。如果连接丢失,则在播放完成时,百分比将小于100%。
答案 1 :(得分:2)
很难知道这一点。我认为你现在的位置& totalDuration方法很棒,但我建议你也要监听设备的网络状态。如果客户端导致服务器连接中断,您可以通过这种方式知道。 This可能有帮助
答案 2 :(得分:2)
您必须确保已实现OnErrorListener
,并且在此onError方法中,您必须返回true值。如果从此方法返回false值,但在此情况下出现错误,则媒体播放器将触发OnCompletionListener
onCompletion方法。