2012-09-26 71 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對象並開始一個新的對象,因此我懷疑它可以無縫地流式傳輸你的音頻。 –