¿A qué se refiere el ID de sesión de audio de Android MediaPlayer?

Como se indica en el título, ¿a qué se refiere el ID de sesión de audio de los objetos de MediaPlayer ? Originalmente, tengo la intención de recuperar el ID de recurso int recurso de audio que mi MediaPlayer está reproduciendo. Pero no pude encontrar un método para eso.

Sin embargo, tropecé con este método getAudioSessionId () y me preguntaba si esa era la función que estaba buscando.

El sistema androide sigue la pista de la reproducción actual o grabación de sonidos (sesiones de audio) y otros servicios pueden conectarse a ellos haciendo referencia a su ID de sesión de audio. La mezcla del sistema (lo que sale de los altavoces) tiene un ID de sesión de audio de 0.

En resumen, eso no es lo que estás buscando a menos que quieras construir un visualizador.

EDIT: Además, para cualquier persona que intenta utilizar el getAudioSessionID() de AudioRecord con un Visualizer o algo más, que no funciona.

De la documentación de AudioManager.generateAudioSessionId :

Un identificador de sesión de audio es un identificador único de sistema para un conjunto de flujos de audio (uno o más mezclados juntos).

El uso principal del ID de sesión de audio es asociar efectos de audio a reproductores de audio, como MediaPlayer o AudioTrack: todos los efectos de audio que comparten el mismo ID de sesión de audio se aplicarán al contenido de audio mixto de los reproductores que compartan la misma sesión de audio.

De la documentación de MediaPlayer.setAudioSessionId :

… si se proporciona un ID de sesión de audio al crear un efecto de audio, este efecto se aplicará sólo al contenido de audio de los reproductores multimedia dentro de la misma sesión de audio y no a la mezcla de salida. Cuando se crea, una instancia de MediaPlayer genera automáticamente su propio ID de sesión de audio. Sin embargo, es posible forzar a este reproductor a ser parte de una sesión de audio ya existente llamando a este método. Este método debe ser llamado antes de uno de los métodos setDataSource sobrecargados.

Para generar un nuevo ID de sesión de audio:

 AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int audioSessionId = audioManager.generateAudioSessionId(); 

AudioManager.generateAudioSessionId() puede devolver AudioManager.ERROR .

Compruébelo antes de asignarlo a MediaPlayer :

 if (audioSessionId != AudioManager.ERROR) { mediaPlayer.setAudioSessionId(audioSessionId); } 

También :

Tenga en cuenta que el ID de sesión de audio es 0 sólo si se ha producido un problema cuando se ha creado el MediaPlayer.

  • TypedValue Conversión en cadena
  • Android: html en strings.xml
  • Proyecto de la biblioteca de Android: Obfuscate and keep resources
  • Android: cómo agregar a los niños de un diseño xml en una vista personalizada
  • ¿Cómo usar diferentes imágenes de fondo para diferentes resoluciones en Android?
  • Android: ¿Por qué getDimension y getDimensionPixelSize devuelven lo mismo?
  • Obtener valor de color mediante programación cuando se trata de una referencia (tema)
  • No conseguir el pulgar con géneros - jugador de música universal
  • Obtener ids de vista en un bucle for por programa?
  • Desactivar la optimización de recursos / imágenes / png de Android
  • Herramienta de traducción para Android para ayudar a proporcionar el contexto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.