Android SDK Mediaplayer.create 随机返回 null

12

我遇到了一个问题,就是偶尔会出现MediaPlayer.create方法返回null的情况,尽管音频文件肯定存在。实际上,如果我将创建调用放入while循环中,媒体播放器最终将成功创建。这似乎只发生在我的手机上(HTC Hero运行2.1),而在模拟器中从未发生。

这只是手机的问题吗?还是我应该以不同的方式播放这些音频文件?

请注意,我想要动态加载它们,这就是为什么我正在调用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();

}
感谢。

我在Droid X上遇到了同样的问题。你找到解决方案了吗?我找到了一种所谓的“修复”方法,在调用create方法之前会调用_player.release()(不过必须在try/catch中调用release)。 - Darcy
+1 同样的问题。我想播放几个视频文件,有时候 MediaPlayer.create 返回 null,我就无法播放下一个文件。 - Peter Barbanyaga
1个回答

1
一个SoundPool(文档)可能是值得考虑的东西。

的确可能如此。然而,我发现在某些情况下,您可能会发现SoundPool在功能上有点欠缺,因为它主要针对非常小的片段,具有简单的生命周期。 - torkildr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接