es probable que prefieren utilizar la clase SoundPool. Reduce la latencia cuando es el momento de reproducir el sonido, y ofrece otras sutilezas como la posibilidad de priorizar sonidos cuando hay demasiados para tocar a la vez.
A partir de los documentos:
A Soundpool es una colección de muestras que se pueden cargar en la memoria de un recurso dentro de la APK o de un archivo en el sistema de archivos. La biblioteca SoundPool utiliza el servicio MediaPlayer para decodificar el audio en un flujo de PCM mono o estéreo sin formato de 16 bits. Esto permite que las aplicaciones se envíen con transmisiones comprimidas sin tener que sufrir la carga de la CPU y la latencia de la descompresión durante la reproducción.
Por ejemplo:
/**
* How many sounds can be played at once.
*/
private static final int MAX_SOUND_POOL_STREAMS = 4;
/**
* Modify this as part of your own priority scheme. Higher numbers mean higher
* priority. If you don't care, it's okay to use the same priority for every
* sound.
*/
private static final int NORMAL_PRIORITY = 10;
private int mySoundId;
@Override
public void setupContent() {
this.soundPool = new SoundPool(MAX_SOUND_POOL_STREAMS,
AudioManager.STREAM_MUSIC, 100);
this.mySoundId = this.soundPool.load(this.getApplicationContext(),
R.raw.mySound, 1);
}
@Override
private void playMySound() {
this.soundPool.play(this.mySoundId, 1, 1, NORMAL_PRIORITY, 0, 1);
}
Ponga la salida de logcat aquí, de lo contrario no podemos reconocer el error. –