Reproducción de archivos .wav cortos – Android
Me gustaría tocar el sonido después de tocar el botón. MediaPlayer funciona bien, pero he leído en alguna parte que esta biblioteca es para .wav largo (como la música).
¿Hay alguna manera mejor de jugar .wav corto (2-3 seg.)?
- Cómo convertir el archivo WAV / OGG a archivo FLAC en Android?
- Cordova-plugin-media: Analiza ".amr" Archivo de audio en el servidor nodejs
- Archivo de audio inverso en Android
- Codificar wav a AAC en Android
- Usar AudioTrack de Android para combinar bytes de muestras de sonido produce ruido
- No se puede reproducir un archivo .wav invertido con MediaPlayer
- Guardar la entrada de audio del motor de reconocimiento de voz de Android Stock
- Comparar voz wav en android o etiqueta de voz (comandos de voz) API
- Cómo codificar un WAV a un mp3 en un dispositivo Android
- Cómo codificar un WAV a un mp3 en un dispositivo Android
- MediaPlayer onCompletion no se llama con precisión
- Escritura de datos grabados PCM en un archivo .wav (java android)
- Creación de un archivo WAV a partir de datos PCM sin procesar utilizando el SDK de Android
El SoundPool es la clase correcta para esto. El siguiente código es un ejemplo de cómo usarlo. También es el código que uso en varias aplicaciones mías para administrar los sonidos. Puedes tener los sonidos que quieras (o como lo permita la memoria).
public class SoundPoolPlayer { private SoundPool mShortPlayer= null; private HashMap mSounds = new HashMap(); public SoundPoolPlayer(Context pContext) { // setup Soundpool this.mShortPlayer = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); mSounds.put(R.raw.<sound_1_name>, this.mShortPlayer.load(pContext, R.raw.<sound_1_name>, 1)); mSounds.put(R.raw.<sound_2_name>, this.mShortPlayer.load(pContext, R.raw.<sound_2_name>, 1)); } public void playShortResource(int piResource) { int iSoundId = (Integer) mSounds.get(piResource); this.mShortPlayer.play(iSoundId, 0.99f, 0.99f, 0, 0, 1); } // Cleanup public void release() { // Cleanup this.mShortPlayer.release(); this.mShortPlayer = null; } }
Usted podría usar esto llamando a:
SoundPoolPlayer sound = new SoundPoolPlayer(this);
En la actividad onCreate () (o en cualquier momento después). Después de eso, para jugar una simple llamada de sonido:
sound.playShortResource(R.raw.<sound_name>);
Por último, una vez que haya terminado con los sonidos, llame a:
sound.release();
Para liberar recursos.