2010-08-28 96 views
11

我遇到了MediaPlayer.create方法偶爾會返回null的問題,即使音頻文件肯定存在。事實上,如果我將創建的調用放入while循環,媒體播放器最終將成功創建。這似乎只發生在我的手機上(HTC Hero正在運行2.1),並且從未在模擬器中出現過。Android SDK Mediaplayer.create隨機返回null

這是電話問題嗎?或者有什麼不同的方式我應該播放這些音頻文件?

請注意,我想要動態加載它們,這就是我正在調用getIndentifer。如果有更好的方式來動態播放這些內容,請讓我知道。

public void playAudio(String audioFile){ 

    //instance variable of type MediaPlayer 
    _player = null; 
    while(_player == null){ 
     _player = MediaPlayer.create(_context, getResources().getIdentifier(audioFile, "raw", _context.getPackageName())); 
    } 
    _player.start(); 

} 


感謝。

+0

我在Droid X上有同樣的問題。你能找到解決方案嗎?我在調用'create'方法之前找到了某種「修復」的地方,我會調用'_player.release()'('release'必須在try/catch中調用) – Darcy 2011-07-14 13:44:00

+0

+1同樣的問題。我想播放幾個視頻文件,有時MediaPlayer.create返回null,我無法播放下一個文件。 – 2016-08-23 18:17:19

回答

1

SoundPool(Docs)可能需要考慮。

+0

它可能確實如此。不過,我發現,在某些情況下,您可能會發現SoundPool功能有點欠缺,因爲它非常針對非常小的剪輯,並具有簡單的生命週期。 – torkildr 2010-10-26 07:07:57