如何在 Android 中播放音效
Posted
技术标签:
【中文标题】如何在 Android 中播放音效【英文标题】:How to play a Sound Effect in Android 【发布时间】:2012-05-04 14:46:10 【问题描述】:我正在寻找一段非常简单的代码来播放声音效果。到目前为止,我有这个代码:
SoundManager snd;
int combo;
private void soundSetup()
// Create an instance of the sound manger
snd = new SoundManager(getApplicationContext());
// Set volume rocker mode to media volume
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the samples from res/raw
combo = snd.load(R.raw.combo);
private void playSound()
soundSetup();
snd.play(combo);
但是,由于某种原因,当我使用 playSound()
方法时,什么也没有发生。音频文件的位置正确。
【问题讨论】:
对于单一声音使用MediaPlayer
,对于高性能播放(例如在有大量声音的游戏中)使用SoundPool
。为了有效的内存管理,您应该使用库来处理这些类:github.com/delight-im/android-Audio
【参考方案1】:
您使用SoundManager
是否有特定原因?我会改用 MediaPlayer
,这里是 Android Docs 的链接
http://developer.android.com/reference/android/media/MediaPlayer.html
那么就这么简单
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.combo);
mp.start();
在“res/”目录下创建一个名为“raw/”的目录。将 wav 或 mp3 文件拖到 raw/ 目录中。如上所述从任何地方播放它们。
【讨论】:
或者只是RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION)
而不是R.raw.combo
。
导入android.media.MediaPlayer;【参考方案2】:
我也尝试使用最佳答案,但当我尝试连续多次播放声音时,它导致 MediaPlayer 出现 NullPointerExceptions,因此我稍微扩展了代码。
FXPlayer 是我的全局 MediaPlayer。
public void playSound(int _id)
if(FXPlayer != null)
FXPlayer.stop();
FXPlayer.release();
FXPlayer = MediaPlayer.create(this, _id);
if(FXPlayer != null)
FXPlayer.start();
【讨论】:
以上是关于如何在 Android 中播放音效的主要内容,如果未能解决你的问题,请参考以下文章