2012-09-26 66 views
0

恢复假定以下:MediaPlayer的 - 从连接状态改变

  1. 应用设置的MediaPlayer数据源到远程URL。 (http://example.com/podcast.mp3)。
  2. MediaPlayer开始通过3G流式传输mp3。它比正在播放的数据缓冲更多的数据,以确保不会暂停缓冲。
  3. 设备短暂失去连接。 MediaPlayer传输了40%的文件,并缓存了50%的文件。
  4. 设备通过WIFI或3G重新获得连接。
  5. 就我所知,MediaPlayer目前没有继续缓冲mp3。
  6. 一旦mediaplayer已达到50%,它会停止。

不幸的是,没有使用代理服务器,不可能同时下载和流式传输MP3(或是否?)。话虽如此,一旦它遇到了失速点,是否有可能继续用新的连接播放mp3(如果可能,无缝地?)。是否有可能看到一个MP3已被缓冲多少?是否有可能,一旦连接重新建立,创建一个新的MediaPlayer连接并从第一个连接切换到下一个?

回答

1

我无法回答你所有的问题,只是把这些我认为我知道的东西放在这里。

是否有可能看到有多少mp3已被缓冲?

添加setOnBufferingUpdateListener侦听器,并在此方法中可以知道有多少百分比被缓冲。

public void onBufferingUpdate(MediaPlayer mp, int percent) { 
    Log.i(TAG, "onBufferingUpdate - percent=" + percent); 

} 

上述工作适用于我的一些流,而不适用于其他一些工作。我仍然试图找出原因。

+0

也许因为它根本不适合我,我甚至没有为这种方法烦恼过。我目前正在播放mp3。 – StackOverflowed

+0

这是一个神话。我也使用了自定义媒体播放器,但结果是一样的。有时它缓冲,有时它没有。在你的最后一个问题中,你是什么意思创建一个新的MediaPlayer连接?你的意思是创建一个新的实例或设置一个新的数据源?在这两种情况下,我认为你必须杀掉以前的mediaplayer对象并开始一个新的对象,因此我怀疑它可以无缝地流式传输你的音频。 –