2012-05-04 417 views
14

我正在寻找一个非常简单的播放音效的代码片段。到目前为止,我有这样的代码:如何在Android中播放音效

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()方法,没有任何反应。音频文件位于正确的位置。

+0

对于单声音使用'MediaPlayer'和高性能回放(例如在有很多声音的游戏中)使用'SoundPool'。为了有效的内存管理,你应该使用一个库来处理这些类:https://github.com/delight-im/Android-Audio – caw

回答

49

是否有您使用的具体原因SoundManager?我会用MediaPlayer相反,这里是Android的文档

http://developer.android.com/reference/android/media/MediaPlayer.html

一个链接,然后它的那样简单

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.combo); 
    mp.start(); 

建立一个叫做目录“原始/”下的“资源/“ 目录。将wav或mp3文件拖入raw /目录。如上所述从任何地方播放它们。

4

我也尝试过使用顶级答案,但是当我试图连续多次播放声音时,它导致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(); 
}