2010-08-22 79 views
3

我使用的是Android的MediaPlayer類玩一些遠程資源。我希望用戶能夠重用MediaPlayer打開一些內容,然後將其更改爲播放另一個,而無需重新創建MediaPlayer重複使用Android的MediaPlayer的

所以,我寫了一個方法來打開一個資源它,首先,重置MediaPlayer,這樣我可以把它送到空閒狀態。之後,我設置了新的URI,並且我調用了prepare方法。無論如何,它經常發生,方法setDataSource掛起,幾秒鐘甚至幾分鐘。這是代碼:

mediaPlayer.reset(); 
mediaPlayer.setDataSource(this, Uri.parse(uri)); 
mediaPlayer.setDisplay(surfaceHolder); 
mediaPlayer.prepare(); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

任何想法爲什麼該方法應該在setDataSource之後和setDisplay方法之前掛幾秒鐘? 謝謝!

回答

1

這可能是: 「必須在prepare()或prepareAsync()之前調用[setAudioStream]方法,以便目標流類型在此後生效。

http://developer.android.com/reference/android/media/MediaPlayer.html#setAudioStreamType(int

+0

看來問題是有關我所用的特定設備。我在另一臺設備上測試了Android 2.2下的相同確切代碼(我遇到了Android 2.1下的這個問題),它的功能就像一個魅力。 – 2010-10-06 16:17:48