studio reproductor reproducir para musica mediaplayer implementar fuente ejemplo detener como codigo android audio soundpool

reproducir - reproductor de musica para android codigo fuente



¿Qué tan malo es Android SoundPool? ¿Qué alternativa usar? (3)

DESCARGO DE RESPONSABILIDAD: Tengo una pequeña cantidad de experiencia con MediaPlayer, y ninguna experiencia exitosa con las otras API que menciono, y la siguiente información se basa en lo que he leído en los DOC y lo que he leído en las búsquedas de Google.

Podría usar mediaplayer (para la música de fondo) con otras API de audio, ya que MediaPlayer se ejecuta automáticamente en su propio hilo, pero creo que tiene una carga de cpu alta, y no creo que tome muy bien los bits comprimidos, pero no estoy muy seguro

También hay JetPlayer http://developer.android.com/reference/android/media/JetPlayer.html que parece mucho trabajo para usar de manera efectiva, pero funcionaría muy bien con la reproducción de música de fondo, y luego reproducir otros sonidos según sea necesario. en el juego. Según lo que leí de los DOC, se necesita un archivo MIDI (¿no es así?) Y se silencian y vuelven a silenciar las pistas para que funcionen cómo tú quieres.

Me gusta AudioTrack porque le da la capacidad de editar sonidos en tiempo de ejecución al cambiar las frecuencias del sonido, y SoundPool puede hacer lo mismo.

Aunque para su situación, AudioTrack no parece funcionar bien, ya que reproducir dos sonidos requeriría dos hilos porque AudioTrack está bloqueando (estoy bastante seguro).

Y con SoundPool, estoy pensando que ya que tiene 16 sonidos, tal vez tome dos hilos con un SoundPool en cada hilo y aplique 8 sonidos a cada SoundPool. Aunque no lo sé realmente, ya que nunca intenté usar SoundPool.

Y de nuevo, mi información no se basa en la experiencia, solo en lo que parece de lo que he leído, por lo que puedo estar completamente o tal vez un poco equivocado, o diablos, quién sabe.

Y realmente no sé nada sobre los errores de SoundPool, ya que no lo he investigado.

Estaba viendo el SoundPool de Android como un mecanismo para implementar efectos de sonido en mi biblioteca genérica de desarrollo de juegos. Parecía ideal.

Pero un poco de investigación indica que hay all kinds of bugs en SoundPool . ¿Los errores en SoundPool siguen siendo relevantes?

Debido a que estoy desarrollando una biblioteca, cualquier error en SoundPool convierte en errores en mi biblioteca, y quiero aislar a mis usuarios de eso.

Entonces mi pregunta es básicamente: ¿qué API debería usar para el audio?

Usar AudioTrack y escribir mi propio mezclador no está fuera de discusión. Pero, obviamente, sería preferible evitar hacer eso. ¿Y hay alguna API para proporcionar decodificación para mí?

Necesito poder reproducir una cantidad razonable de efectos de sonido simultáneos (al menos 16, digamos) y tener aún más abierto. Los sonidos necesitan comenzar a jugar con baja latencia. WAV archivos WAV deben ser compatibles (MP3 / Ogg no es importante). Los efectos de sonido deben ser compatibles con bucles sin interrupciones y ajustes de volumen dinámicos e individuales. El ciclo de vida de la aplicación Android debe ser soportado adecuadamente.

He escuchado que hay un límite de 1MB en algún lugar para SoundPool , esto es probablemente aceptable para cada efecto de sonido individual pero no para todos los buffers / sonidos. ¿Puede alguien decirme exactamente en qué está el límite?

Finalmente, también necesito poder reproducir música de fondo, en formatos comprimidos, con poca carga de CPU. Supongo que MediaPlayer es ideal para esto. ¿Se puede usar en paralelo con otra API?

Sé que algunas personas han estado usando MediaPlayer para completar SoundPool . Pero, ¿admite las características que necesito?

¿Hay alguna otra API de audio que me haya perdido?


Quédate con los archivos OGG y SoundPool te hará bien. Es la naturaleza de la bestia multiplataforma que es Android que habrá configuraciones de hardware que no funcionarán con todos los programas importantes, sin importar qué tan diligentemente lo prueben los programadores.

Si este es un proyecto grande y bien financiado, agregue a la financiación uno de cada teléfono principal para la prueba. En realidad, es mucho más barato que el tiempo invertido por el programador en investigar e intentar adivinar cuál es su rendimiento.

Lo siento. Parece que esta no es la respuesta que estabas buscando. ¡Buena suerte!


Solo para agregar algunos comentarios más recientes sobre este tema. He estado usando SoundPool durante un tiempo en una aplicación con una base de usuarios bastante grande para los sonidos de las teclas. Nuestro caso de uso:

  • Debe jugarse inmediatamente
  • Hasta 3+ sonidos en paralelo
  • Hacemos uso de setRate todo su rango [0.5f-2.0f]

Ahora he experimentado dos problemas principales de dispositivos específicos y he decidido reducir mis pérdidas y cambiar de SoundPool

  • Una gran cantidad de dispositivos 4.4 LG (principalmente la línea LG G2 / G3) sufrían un bloqueo nativo con su implementación de SoundPool. Esto se solucionó en una actualización (eventualmente) pero todavía tenemos muchos usuarios con dispositivos no actualizados
  • Los dispositivos Sony Xperia actualmente tienen todo tipo de problemas con SoundPool según lo informado por otros . En mi caso, descubrí que si usas setRate con una rate > 1.0f SoundPool comienza a lanzar excepciones hasta que la aplicación se cierra (y consume un montón de batería en el proceso).

TL; DR; Ya no creo que valga la pena el peligro / la molestia de depurar SoundPool