使用 Android MediaPlayer 播放声音时出现问题

Posted

技术标签:

【中文标题】使用 Android MediaPlayer 播放声音时出现问题【英文标题】:Problems playing sounds with Android MediaPlayer 【发布时间】:2011-03-17 11:27:49 【问题描述】:

我在使用 android MediaPlayer 播放声音时遇到了一些奇怪的问题。

在我的 View 构造函数中,我正在这样做:

    clickSound = MediaPlayer.create(context, R.raw.ggclick);
    rightSound = MediaPlayer.create(context, R.raw.right);
    wrongSound = MediaPlayer.create(context, R.raw.wrong);

然后当我想播放声音时:

if(prefs.getBoolean("playClick", true))
    clickSound.start();

这些文件都是非常短的 WAV 文件,这曾经可以工作。我最近将手机升级到 2.2 (FRG83G),我认为那是 clickSound 停止工作的时候。其他两个仍然有效。

我尝试将点击声音切换为 ogg,然后这三个都起作用了。为了保持一致,我将另外两个切换到 ogg,点击声音再次停止工作,但其他两个播放成功。

有人知道这里发生了什么吗?

【问题讨论】:

您是否收到任何错误消息?可能是 clicksound 太短,无法以您拥有的格式在 2.2 媒体播放器中播放。 【参考方案1】:

这是我从原始资源中播放声音的功能:

protected MediaPlayer _mediaPlayer;  

public void playFromResource(int resId)     
     
     if (_mediaPlayer != null)
         
         _mediaPlayer.reset();
         
     _mediaPlayer = MediaPlayer.create(this, resId);
     _mediaPlayer.start();
      

【讨论】:

【参考方案2】:

如果您只是发射非常短的样本(不是歌曲或长音轨),并且不需要在旅途中操纵它们,则应该使用 SoundPool。

【讨论】:

以上是关于使用 Android MediaPlayer 播放声音时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Android -- 多媒体播放之MediaPlayer使用内部实现简析

使用 Android MediaPlayer 播放声音时出现问题

在 Android 中是不是可以录制 MediaPlayer 播放的内容?

在 Android 的 MediaPlayer 上播放音频时遇到问题

android 使用MediaPlayer播放音乐要添加的权限是啥?

Android播放音频MediaPlayer的几种方式介绍