2012-05-04 12 views
14

Estoy buscando hacer una pieza muy simple de código que reproduzca un efecto de sonido. Hasta ahora tengo este código:Cómo reproducir un efecto de sonido en 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); 
} 

Sin embargo, por alguna razón, cuando se utiliza el método de playSound(), no pasa nada. El archivo de audio está en la ubicación correcta.

+0

Para sonidos solo uso 'MediaPlayer' y para la reproducción de alto rendimiento (por ejemplo en juegos con un montón de sonidos) usar' SoundPool'. Para una gestión de memoria eficiente, debe usar una biblioteca para trabajar con esas clases: https://github.com/delight-im/Android-Audio – caw

Respuesta

49

¿Hay algún motivo específico por el que esté utilizando SoundManager? Me gustaría utilizar MediaPlayer lugar, aquí hay un enlace a los Docs para Android

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

entonces es tan simple como

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

Cree el directorio llamado "crudo /" bajo las "res/"directorio. Arrastre archivos wav o mp3 en el directorio raw /. Juega desde cualquier lugar como arriba.

4

También he intentado usar la respuesta superior, pero resultó en NullPointerExceptions del MediaPlayer cuando intenté reproducir un sonido muchas veces seguidas, así que extendí el código un poco.

FXPlayer es mi MediaPlayer global.

public void playSound(int _id) 
{ 
    if(FXPlayer != null) 
    { 
     FXPlayer.stop(); 
     FXPlayer.release(); 
    } 
    FXPlayer = MediaPlayer.create(this, _id); 
    if(FXPlayer != null) 
     FXPlayer.start(); 
} 
Cuestiones relacionadas