安卓,如何显示缓冲百分比来自onBufferingUpdate



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

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

正如您所知,EstadoRadio 是我的 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

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

我会用远程 mp3 URL 替换您的互联网流,以查看缓冲是否获得真正的值(因为这将确认您的其余代码不是罪魁祸首。

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

我不相信使用 Android 中的内置侦听器可以显示缓冲百分比。如果不打开Android源代码来查找MediaPlayer类决定在什么时候开始播放您的流(以及他们甚至提供回调(,我怀疑这个问题是否会得到解决。

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

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

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

最新更新