2012-05-04 12 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 mp = MediaPlayer.create(getApplicationContext(), R.raw.combo); 
    mp.start(); 

としては、「RESの下に「/生」というディレクトリを作成しますように簡単です MediaPlayer代わりに、ここではAndroidのドキュメント

へのリンクがある

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

を使用します/ "ディレクトリにあります。 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(); 
} 
関連する問題