Media2
androidx.media2.common
androidx.media2.player
androidx.media2.session
androidx.media2.widget
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.
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 usaandroidx.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
yMEDIA_URI_QUERY_URI
enMediaConstants
.
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
yMEDIA_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
- Se corrigió la NPE de VersionedParcelable. (I1ec28, b/177060207)
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
medianteMediaSession#getSessionCompatToken()
.
- Se agregó
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 agetCurrentControllerInfo()
en unMediaSessionCompat
publicado (aosp/1423291). - Se solucionó un problema por el que
MediaSession
de media2 no establecía el ID de elemento de cola activo enPlaybackStateCompat
(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 deMediaPlayer.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
enMediaPlayer#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 agetDuration()
en un estadoIDLE
(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()
conMediaBrowserService
(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 delsetPlayer
.
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
- En su mayoría, las API se corresponden con
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
yMediaBrowserServiceCompat
- Una versión liviana de
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
yMediaBrowserServiceCompat
media2.session.MediaController
- Se puede conectar a
MediaSession
,MediaSessionService
yMediaLibraryService
- Es interoperable con
MediaSessionCompat
yMediaBrowserServiceCompat
- Se puede conectar a
media2.session.MediaBrowser
- Hereda
MediaController
- Se puede conectar a
MediaSession
,MediaSessionService
yMediaLibraryService
- Es interoperable con
MediaSessionCompat
yMediaBrowserServiceCompat
- Hereda
media2.widget.VideoView
- Contiene toda la funcionalidad de
android.widget.VideoView
- Proporciona el cambio entre
TextureView
ySurfaceView
- Puede funcionar junto con
MediaSession
- Contiene toda la funcionalidad de
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
osetController
ya no se pueden llamar medianteMediaControlView
(MCV) cuandoMediaControlView
pertenece a unVideoView
.
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 deNullPointerException
cuando se llamaba aonAttachedToWindow()
.- 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 conListenableFuture
, puedes solucionar el problema de manera temporal agregandoandroid.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
porNullPointerException
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
yMediaBrowser
pueden enviar sugerencias de conexión de la aplicación aMediaSession
,MediaSessionService
oMediaLibraryService
.- 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:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- Se fusionaron las siguientes clases:
DataSourceDesc2
yMediaItem2
se combinaron enMediaItem
MediaPlaylistAgent
yMediaPlayerConnector
se combinaron enSessionPlayer
- Se agregaron las siguientes subclases de
Rating
:HeartRating
,PercentageRating
,StarRating
yThumbRating
. Media2
ahora usaListenableFuture
para métodos asíncronos.