2012-05-04 413 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(); 
}