2010-08-28 98 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