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

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.

  • Reproducción de sonido de una frecuencia en android
  • Excepción no captada lanzada por el finalizador java.lang.IllegalStateException: Binder se ha finalizado
  • Reproducir sonido utilizando el ejemplo de grupo de sonidos
  • Android: grabación de la salida SoundPool
  • Y otra vez sobre problemas de memoria con SoundPool
  • Problemas de desbordamiento de tamaño de montón con clips de sonido
  • AudioFlinger no pudo crear pista. Estado: -12
  • La muestra de Soundpool no está lista
  • Seamless Looping con SoundPool en Android?
  • ¿Cuál es la mejor manera de obtener una duración de archivo de audio en Android?
  • SoundPool "AudioFlinger no pudo crear pista, estado: -12"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.