Android,如何从onBufferingUpdate显示缓冲%

时间:2012-05-17 18:52:20

标签: android stream media-player buffering

我有一个播放互联网流的媒体播放器服务,但是我遇到了如何在我的xml中显示缓冲百分比的问题,目前我只是在显示一条消息,因为我尝试过它的所有方法给了我一个静态的长号。 以下是我的播放器服务中的代码:

@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
    setBufferPosition(percent * getMusicDuration() / 100);
    myMain.EstadoRadio.setText(" Reproductor \n Buffering... ");
}

正如你所知道的那样,我的xml中的一个文本视图是在myMain活动中运行的,我希望显示流的缓冲百分比。 谢谢你的帮助。

编辑:我在大多数情况下都会看到使用onBufferingUpdate(MediaPlayer mp,int percent)的'%',如下所示:

myMain.EstadoRadio.setText(" Reproductor \n" + percent + "%");

但在我的情况下,百分比总是-2147483648,我不知道为什么,或者为什么它没有改变或更新,这里有一点来自我的日志猫:

05-17 13:34:37.005: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0
05-17 13:34:37.005: V/MediaPlayer(25382): buffering -2147483648
05-17 13:34:37.005: V/MediaPlayer(25382): callback application
05-17 13:34:37.005: V/MediaPlayer(25382): getDuration
05-17 13:34:37.015: V/MediaPlayer(25382): back from callback
05-17 13:34:38.016: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0
05-17 13:34:38.016: V/MediaPlayer(25382): buffering -2147483648
05-17 13:34:38.016: V/MediaPlayer(25382): callback application
05-17 13:34:38.016: V/MediaPlayer(25382): getDuration
05-17 13:34:38.016: V/MediaPlayer(25382): back from callback

1 个答案:

答案 0 :(得分:3)

您看到的数字是带符号的32位int的最小值。我会猜测并且说Android无法返回一个百分比,实际上是在向您提供垃圾数据。

我会用远程mp3网址替换您的互联网流,以查看缓冲是否获得真正的价值(因为这会确认您的其余代码不应该受到责备。)

编辑:关于OnBufferingUpdateListener的Android文档解释了渐进式http下载的用例,而不是无休止的互联网流。

我不相信使用Android内置的监听器可以显示缓冲百分比。如果没有破解Android源代码以找到MediaPlayer类决定何时开始播放您的流(如果他们甚至提供回调),我怀疑这个问题是否会得到解决。

如果有人可以提供解决方案/解决方法,我会感兴趣。

http://en.wikipedia.org/wiki/Integer_(computer_science

http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html