Media2

Comparte contenido y controles multimedia con otras apps.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
10 de enero de 2024 1.3.0 - - -

Cómo declarar dependencias

Para agregar una dependencia en Media2, debes agregar el repositorio de Maven de Google a tu proyecto. Lee el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
    def media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation "androidx.media2:media2-session:$media2_version"
    // optional - UI widgets for VideoView and MediaControlView
    implementation "androidx.media2:media2-widget:$media2_version"
    // optional - Implementation of a SessionPlayer
    implementation "androidx.media2:media2-player:$media2_version"
}

Kotlin

dependencies {
    val media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation("androidx.media2:media2-session:$media2_version")
    // optional - UI widgets for VideoView and MediaControlView
    implementation("androidx.media2:media2-widget:$media2_version")
    // optional - Implementation of a SessionPlayer
    implementation("androidx.media2:media2-player:$media2_version")
}

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.3

Versión 1.3.0

10 de enero de 2024

Lanzamiento de androidx.media2:media2-*:1.3.0. La versión 1.3.0 contiene estas confirmaciones.

Cambios importantes desde 1.2.0

  • androidx.media2 dejó de estar disponible por completo. Usa androidx.media3 en su lugar.

Versión 1.3.0-rc01

13 de diciembre de 2023

Lanzamiento de androidx.media2:media2-*:1.3.0-rc01 sin modificaciones desde Media2 1.3.0-beta01. La versión 1.3.0-rc01 contiene estas confirmaciones.

Versión 1.3.0-beta01

29 de noviembre de 2023

Lanzamiento de androidx.media2:media2-*:1.3.0-beta01 sin modificaciones desde Media2 1.3.0-alpha01. La versión 1.3.0-beta01 contiene estas confirmaciones.

Versión 1.3.0-alpha01

15 de noviembre de 2023

Lanzamiento de androidx.media2:media2-*:1.3.0-alpha01. La versión 1.3.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • androidx.media2 ya no está disponible. Se usa androidx.media3 en su lugar. (I53164).

Versión 1.2.1

Versión 1.2.1

9 de febrero de 2022

Lanzamiento de androidx.media2:media2-*:1.2.1. La versión 1.2.1 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la verificación de objetos Parcelables personalizados cuando orientas tu contenido al nivel de API 33.

Versión 1.2.0

Versión 1.2.0

15 de septiembre de 2021

Lanzamiento de androidx.media2:media2-*:1.2.0. La versión 1.2.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.1.0

  • Compatibilidad de interoperabilidad con el contenido multimedia de AndroidX de (prepare|play)From(MediaId|Uri|Search)
  • Se agregaron MEDIA_URI_PATH_SET_MEDIA_URI y MEDIA_URI_QUERY_URI en MediaConstants.

Versión 1.2.0-rc01

1 de septiembre de 2021

Lanzamiento de androidx.media2:media2-*:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un error de ANR que se producía cuando se descartaba una notificación multimedia (Ifdcc2, b/148011394)

Versión 1.2.0-beta01

30 de junio de 2021

Lanzamiento de androidx.media2:media2-*:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Compatibilidad de interoperabilidad con el contenido multimedia de AndroidX de (prepare|play)From(MediaId|Uri|Search)

Cambios en la API

  • Se agregaron MEDIA_URI_PATH_SET_MEDIA_URI y MEDIA_URI_QUERY_URI en MediaConstants.

Versión 1.2.0-alpha01

21 de abril de 2021

Lanzamiento de androidx.media2:media2-*:1.2.0-alpha01. La versión 1.2.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • Se agregó compatibilidad para (prepare|play)From(MediaId|Uri|Search). (I13475, b/176949057)

Correcciones de errores

  • Se corrigió un problema de interbloqueo que producen los bloqueos sincronizados innecesarios.
  • Se restableció el reproductor cuando no hay elementos reproducibles.
  • Se permitió que onCurrentMediaItemChanged tome un elemento multimedia nulo.
  • Se actualizó la notificación cuando se cambia el elemento multimedia actual.
  • Se corrigió la interoperabilidad con la compatibilidad del controlador justo inmediatamente después de crear la sesión.

Versión 1.1.3

Versión 1.1.3

21 de abril de 2021

Lanzamiento de androidx.media2:media2-*:1.1.3. La versión 1.1.3 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un problema de interbloqueo que producen los bloqueos sincronizados innecesarios.

Versión 1.1.2

Versión 1.1.2

27 de enero de 2021

Lanzamiento de androidx.media2:media2-*:1.1.2. La versión 1.1.2 contiene estas confirmaciones.

Correcciones de errores

Versión 1.1.1

Versión 1.1.1

16 de diciembre de 2020

Lanzamiento de androidx.media2:media2-*:1.1.1. La versión 1.1.1 contiene estas confirmaciones.

Correcciones de errores

  • Haz que la notificación multimedia se actualice cuando se cambie el elemento multimedia actual.

Versión 1.1.0

Versión 1.1.0

2 de diciembre de 2020

Lanzamiento de androidx.media2:media2-*:1.1.0. La versión 1.1.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.0.0

  • Se agregaron más API para controlar pistas multimedia
  • Mejor compatibilidad de interoperabilidad con la biblioteca multimedia de AndroidX
    • Se agregó MediaSession#setMediaUri.
    • Se expuso MediaSessionCompat.Token mediante MediaSession#getSessionCompatToken().

Versión 1.1.0-rc01

28 de octubre de 2020

Lanzamiento de androidx.media2:media2-*:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

  • Se solucionó un problema en el que MediaController notificaba devoluciones de llamada mientras mantenía el bloqueo exclusivo, lo que podía provocar interbloqueos (I76c56).
  • Se solucionó un problema por el que MediaSessionImplBase#isClosed() podía fallar cuando se llamaba a getCurrentControllerInfo() en un MediaSessionCompat publicado (aosp/1423291).
  • Se solucionó un problema por el que MediaSession de media2 no establecía el ID de elemento de cola activo en PlaybackStateCompat (aosp/1421652).
  • Se agregó la marca BIND_INCLUDE_CAPABILITIES durante la vinculación con el servicio, lo que permite que las aplicaciones multimedia sin interfaz gráfica accedan a la ubicación si tienen el permiso. Eso es útil especialmente para las apps de Android Auto (aosp/1440731).

Versión 1.1.0-beta01

16 de septiembre de 2020

Lanzamiento de androidx.media2:media2-*:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se restablece la posición actual cuando cambia el elemento multimedia.
  • Se envían los metadatos y el estado del almacenamiento en búfer cuando hay una conexión.
  • Se corrigió la falla que ocurre cuando se envían datos grandes entre una sesión y un controlador.
  • Se agregó <queries> al manifiesto de media y media2 para Android 11.
  • Se corrigió la NPE de MediaController.getPlaylist().
  • Se inhabilitó la barra de progreso de MediaControlView cuando el comando de búsqueda no está permitido.
  • Se notifica a PlaybackStateCompat cuando cambia el elemento multimedia actual de una sesión.
  • Se corrigieron las parcelas de SessionPlayer.TrackInfo.

Versión 1.1.0-alpha01

24 de junio de 2020

Lanzamiento de androidx.media2:media2-*:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el problema de sincronización al actualizar los metadatos (I45567, b/143999611).
  • SessionResult conservará el MediaItem de PlayerResult (I927b0, b/154885520).
  • Se corrigió un error por el que MediaController#setVolumeTo() podía cambiar el volumen de transmisión incorrecto (I76870, b/151204736).

Versión 1.0.3

Versión 1.0.3

19 de febrero de 2020

Lanzamiento de androidx.media2:media2-*:1.0.3. La versión 1.0.3 de media2-{common,player,session} contiene estas confirmaciones, y la versión 1.0.3 de media2-widget contiene estas otras.

Correcciones de errores

  • Se corrigió una NullPointerException que se generaba al crear un MediaController con una devolución de llamada nula.
  • Se corrigió un problema por el que no se llamaba a onPlaylistChanged() después de MediaPlayer.setMediaItem.

Versión 1.0.2

Versión 1.0.2

5 de febrero de 2020

Lanzamiento de androidx.media2:media2-*:1.0.2. La versión 1.0.2 de media2-{common,player,session} contiene estas confirmaciones, y la versión 1.0.2 de media2-widget contiene estas otras.

Correcciones de errores

  • Se corrigió un IndexOutOfBoundsException en MediaPlayer#getSelectedTrack() (aosp/987003).
  • Se mejoró el procesamiento del caso en el que ExoPlayer llama a getDuration() y el elemento multimedia no existe (aosp/987484).
  • Se corrigió un error por el que ExoPlayer no arrojaba un IllegalStateException cuando se llamaba a getDuration() en un estado IDLE (aosp/987246).
  • No permitir objetos Parcelables personalizados para media2 (aosp/1091056).
  • Se corrigió un problema que provocaba una suspensión en close() (aosp/1096455).
  • MediaBrowser: Se mejoró el manejo de errores en subscribe() con MediaBrowserService (aosp/1158057).
  • Se corrigió una falla de MediaController con el framework de MediaSession (aosp/1177663).
  • No notificar la información de la sesión con devoluciones de llamada cuando se establece la conexión (aosp/1195030, b/142925848).
  • Se corrigió un problema en el que se podía enviar un SessionResult más de una vez de forma inesperada desde MediaController (aosp/1198634).
  • Se corrigió un problema en el que MediaController podía enviar comandos no permitidos a MediaSession, por lo que MediaSession ahora envía RESULT_ERROR_PERMISSION_DENIED (aosp/1204183).
  • Se corrigió un problema de inestabilidad relacionado con MediaControllerView#setPlayer (aosp/987004).

Versión 1.0.1

Versión 1.0.1

9 de octubre de 2019

Lanzamiento de androidx.media2:media2-*:1.0.1. La versión 1.0.1 de androidx.media2:media2-{player, session}:1.0.1 contiene estas confirmaciones, y la versión 1.0.1 de androidx.media2:media2-widget:1.0.1 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió una excepción RuntimeException que se producía cuando se enviaba una subclase de MediaItem en el proceso (aosp/1098971).
  • Se corrigió un problema en el que MediaPlayer solo llamaba a onCurrentMediaItemChanged() una vez cuando se reproducía una playlist.
  • Se corrigió un problema en el que MediaPlayer podía reproducir una playlist con más de 2 elementos. (aosp/1108440)
  • Se solucionó un problema en el cual el jugador seguía jugando en SurfaceView, incluso aunque era invisible.
  • Se solucionó un problema de reproducción de VideoView que se producía al realizar una llamada a setViewType antes del setPlayer.

Versión 1.0.0

5 de septiembre de 2019

Lanzamiento de androidx.media2:media2-*:1.0.0. Estas son las confirmaciones incluidas en media2-{player, session}:1.0.0, y estas son las confirmaciones incluidas en media2-widget:1.0.0.

Funciones principales de Media2 1.0.0

Media2 es la última generación de las siguientes API de Media: MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoView y MediaControlView.

  • media2.player.MediaPlayer
    • En su mayoría, las API se corresponden con android.media.MediaPlayer, y el motor subyacente es ExoPlayer
    • Foco de audio y control de ruido incorporados
    • Implementa SessionPlayer
  • media2.session.MediaSession
    • Proporciona control de permisos específicos
    • Admite diseños personalizados
    • Fácil de usar con SessionPlayer, como androidx.media2.player.MediaPlayer
    • Es interoperable con MediaControllerCompat
  • media2.session.MediaSessionService
    • Una versión liviana de MediaLibraryService
    • Proporciona administración del ciclo de vida del servicio para la reproducción en segundo plano
    • Es interoperable con MediaControllerCompat y MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Admite una mejor paginación para navegar por elementos de contenido multimedia o por resultados de búsqueda que contienen muchos elementos
    • Es interoperable con MediaControllerCompat y MediaBrowserServiceCompat
  • media2.session.MediaController
    • Se puede conectar a MediaSession, MediaSessionService y MediaLibraryService
    • Es interoperable con MediaSessionCompat y MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Hereda MediaController
    • Se puede conectar a MediaSession, MediaSessionService y MediaLibraryService
    • Es interoperable con MediaSessionCompat y MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Contiene toda la funcionalidad de android.widget.VideoView
    • Proporciona el cambio entre TextureView y SurfaceView
    • Puede funcionar junto con MediaSession
  • media2.widget.MediaControlView
    • Tiene una mejor apariencia
    • Contiene toda la funcionalidad de android.widget.MediaController
    • Proporciona una selección de pistas de subtítulos y de velocidad de reproducción, además del modo de pantalla completa

Versión 1.0.0-rc02

22 de agosto de 2019

Lanzamiento de androidx.media2:media2-*:1.0.0-rc02. Para conocer los cambios incluidos en esta versión, consulta este vínculo. Esta versión incluye androidx.media2:media2-widget:1.0.0-rc02. Para conocer los cambios incluidos en esta versión, consulta este vínculo.

Nuevas funciones

  • setPlayer o setController ya no se pueden llamar mediante MediaControlView (MCV) cuando MediaControlView pertenece a un VideoView.

Correcciones de errores

  • MediaControlView: Solo es posible hacer clic en los botones Siguiente y Anterior cuando hay elementos multimedia siguientes o anteriores.
  • MediaControlView: Se corrigió un problema relacionado con inestabilidad de NullPointerException cuando se llamaba a onAttachedToWindow().
  • El widget Media2 ahora controla los metadatos del nuevo elemento multimedia correctamente si se cambia el elemento multimedia actual.

Media2-Widget versión 1.0.0-beta01

2 julio de 2019

Lanzamiento de androidx.media2:media2-widget:1.0.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Reproducción en segundo plano: En lugar de crear un reproductor dentro de VideoView, este puede usar SessionPlayer o MediaController para que la aplicación pueda pasar al modo de reproducción en segundo plano sin problemas.
  • Se quitó la dependencia con la biblioteca media2-player.
  • Se agregó onViewTypeChangedListener.

Cambios en la API

  • Cambio de visibilidad de público a protegido:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Se quitaron los siguientes elementos:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Se agregaron:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

Versión 1.0.0-rc01

18 de junio de 2019

Lanzamiento de androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01 y androidx.media2:media2-session:1.0.0-rc01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Cambios en la API

  • Se volvieron a migrar las dependencias de ListenableFuture a la implementación independiente de Guava.

  • Ten en cuenta que si tienes objetivos de prueba que dependen del artefacto completo de Guava, puede haber un conflicto de resolución de dependencia al usar ciertas versiones del complemento de Gradle para Android. Si encuentras el error Could not resolve all artifacts relacionado con ListenableFuture, puedes solucionar el problema de manera temporal agregando android.dependency.useConstraints=false a la configuración de compilación del proyecto. En este momento, estamos trabajando en una solución permanente dentro del complemento de Gradle para Android y la lanzaremos más adelante.

Versión 1.0.0-beta02

5 de junio de 2019

Lanzamiento de androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02 y androidx.media2:media2-session:1.0.0-beta02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Correcciones de errores

  • Al configurar la velocidad de reproducción negativa en androidx.media.player.MediaPlayer, se muestra RESULT_ERROR_BAD_VALUE.
  • Se reemplazó la implementación de Guava ListenableFuture por Jetpack (aosp/968828).

Versión 1.0.0-beta01

7 de mayo de 2019

Lanzamiento de androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01 y androidx.media2:media2-session:1.0.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Las bibliotecas se dividen en 3 partes: media2-common, media2-player y media2-session.
  • Se reemplazó IllegalPointerException por NullPointerException para los argumentos nulos que se marcaban como @NonNull.

Cambios en la API

  • Se introdujo MediaController.Builder.
  • Se agregaron métodos de establecedor para los campos opcionales de FileMediaItem.Builder.
  • MediaController y MediaBrowser pueden enviar sugerencias de conexión de la aplicación a MediaSession, MediaSessionService o MediaLibraryService.
  • Se cambió el nombre de algunos métodos según las API de Media2 de Android 10.

Versión 1.0.0-alpha04

17 de diciembre de 2018

Cambios en la API

  • Se cambiaron los nombres de las siguientes clases:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Se fusionaron las siguientes clases:
    • DataSourceDesc2 y MediaItem2 se combinaron en MediaItem
    • MediaPlaylistAgent y MediaPlayerConnector se combinaron en SessionPlayer
  • Se agregaron las siguientes subclases de Rating: HeartRating, PercentageRating, StarRating y ThumbRating.
  • Media2 ahora usa ListenableFuture para métodos asíncronos.