Sincronización de sonidos Android
¿Existe una manera confiable de evitar el truncamiento de sonidos en soundpool? He tenido algunos éxitos con la función sleep () entre los sonidos, pero a veces se pierden el último bit de sonido antes de iniciar otro sonido. Mi aplicación reproduce sonidos cortos en secuencia. alemán
- Android reproducir repetidamente un archivo mp3 sin ningún espacio vacío
- Reproducción de sonido en los altavoces mientras reproduce música a través de auriculares
- Android SoundPool cortar archivo de sonido corto
- ¿Por qué mis sonidos SoundPool no se reproducen simultáneamente en onClick ()?
- ¿Por qué varias llamadas de Android SoundPool.unload devuelven true / false dependiendo del pedido?
- Efecto de audio Android en el archivo wav y guárdelo
- Volumen de secuencia en SoundPool vs volumen en AudioManager
- Soundpool reproduce sólo los primeros 5 segundos del archivo. ¿Por qué?
- ¿Cómo detener todos los sonidos en SoundPool?
- Problemas de Android Soundpool
- Android es la forma más rápida de cargar y reproducir sonido en la aplicación
- Saber si la carga de un sonido con SoundPool ha tenido éxito en Android 1.6 / 2.0 / 2.1
- Cómo reproducir sonidos en períodos de tiempo precisos entre dispositivos diferentes en Android
Aunque esto es una vieja pregunta, pensé que fijaría algo aquí puesto que no podría encontrar una solución a este problema en línea pero vine para arriba con algo de una solución …
Tengo la duración de cada sonido (usando MediaPlayer) cuando mi aplicación se inicia, y almacenar el valor de R.id.sound_name y la duración juntos. Entonces puedo reproducir los sonidos usando SoundPool.
Código para obtener la duración:
private long getSoundDuration(int rawId){ MediaPlayer player = MediaPlayer.create(context, rawId); int duration = player.getDuration(); return duration; }
En mi clase de sonido, luego toco el sonido como de costumbre y luego duermo por la duración. Cosas bastante simples.
Parece que funciona bien. Me da las ventajas de baja latencia de SoundPool, además de la capacidad de encadenar cosas.
Un par de cosas a tener en cuenta:
- No obtenga la duración cada vez, ya que crear un MediaPlayer tiene sobrecarga.
- Las duraciones se toman de metadatos de archivo – el trabajo de ogg es genial para mí, pero no puedo responder por nada más.
Asegúrese de tener suficientes Streams. en el constructor SoundPool, el primer argumento es MaxStreams. Fija eso a lo que te parezca. 8 o así debe ser suficiente supongo … pero puede que necesite más, dependiendo de sus sonidos.
- Generar / crear un código de barras en Android
- ¿Cómo puedo extraer la versión de la aplicación que aparece en AndroidManifest.xml de Java?