2

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

4

3 回答 3

2

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

于 2013-01-10T16:27:12.627 回答
2

真的很难知道这一点。我认为您的 currentPosition 和 totalDuration 方法很棒,但我建议您也听听设备的网络状态。如果客户端导致与服务器的连接断开,您可以通过这种方式知道。可能会有所帮助

于 2013-01-16T07:56:34.100 回答
2

你必须确保你有一个OnErrorListener实现,并且在这个 onError 方法中你必须返回真值。如果您从此方法返回 false 值,但在这种情况下出现错误,媒体播放器会触发OnCompletionListeneronCompletion 方法。

于 2013-01-16T22:30:52.050 回答