Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-检测流结束,而不是MediaPlayer中的连接错误_Java_Android_Android Mediaplayer - Fatal编程技术网

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

Java Android-检测流结束,而不是MediaPlayer中的连接错误,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,在收听1小时mp3流时,如果用户失去连接(或从WIFI切换到3G,连接“断开”一秒钟),我们会注意到MediaPlayer会继续播放其缓冲的内容。一旦缓冲内容用完,如果没有完成到文件末尾,我会假设它会触发一个错误事件,但它会将状态更改为播放完成。我们如何确定播放结束是由于连接错误(连接丢失)还是实际播放完成?我唯一能想到的就是在MediaPlayer将状态更改为播放完成时检查CurrentPosition与totalDuration。有更好的方法吗?如果它没有触发事件,您可以尝试注册并检查缓冲百

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

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

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

您必须确保您已经实现了一个onError方法,并且在此onError方法中必须返回真值。如果此方法返回的值为假,但在这种情况下出现错误,media player将触发onCompletion方法。

使用缓冲区百分比的问题(设备实现的差异除外)在于,这些是持续时间较长(1-3小时或更长)的MP3而且缓冲区百分比几乎总是小于100%。@StackOverflow您的意思是,即使缓冲完成,您在
OnBufferingUpdateListener
回调中也不能得到100%?我的意思是,如果mp3的长度为5小时,那么当网络连接丢失时,它可能已经在mp3中缓冲了4小时。@StackOverflow完全正确。因此,在这种情况下,对
OnBufferingUpdateListener
的最后一次调用将小于100%,这表示播放完成时网络丢失。只有在缓冲完成时,才应达到100%。我不理解您试图解释的这种方法的问题。我是说,在出现网络问题之前,缓冲不能达到100%是很自然的。