6

我有一个播放互联网流的媒体播放器服务,但我在如何在我的 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
4

1 回答 1

3

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

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

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

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

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

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

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

于 2013-01-07T09:08:30.023 回答