Media2
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
10 de janeiro de 2024 | 1.3.0 | - | - | - |
Como declarar dependências
Para adicionar uma dependência a Media2, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários no arquivo build.gradle
para
seu app ou 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 ver mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.3
Versão 1.3.0
10 de janeiro de 2024
Lançamento de androidx.media2:media2-*:1.3.0
. A versão 1.3.0 contém estas confirmações.
Mudanças importantes desde a versão 1.2.0
- O uso de androidx.media2 foi totalmente descontinuado. Use androidx.media3
Versão 1.3.0-rc01
13 de dezembro de 2023
Lançamento de androidx.media2:media2-*:1.3.0-rc01
sem alterações do Media2 1.3.0-beta01. A versão 1.3.0-rc01 contém estas confirmações.
Versão 1.3.0-beta01
29 de novembro de 2023
Lançamento de androidx.media2:media2-*:1.3.0-beta01
sem mudanças desde a Media2 1.3.0-alpha01
. A versão 1.3.0-beta01 contém estas confirmações.
Versão 1.3.0-alpha01
15 de novembro de 2023
Lançamento de androidx.media2:media2-*:1.3.0-alpha01
. A versão 1.3.0-alpha01 contém estas confirmações.
Mudanças na API
- O uso de
androidx.media2
foi totalmente descontinuado. Useandroidx.media3
. (I53164).
Versão 1.2.1
Versão 1.2.1
9 de fevereiro de 2022
Lançamento de androidx.media2:media2-*:1.2.1
. A versão 1.2.1 contém estas confirmações.
Correções de bugs
- Correção da verificação de Parcelables personalizados ao direcionar para a API 33.
Versão 1.2.0
Versão 1.2.0
15 de setembro de 2021
Lançamento de androidx.media2:media2-*:1.2.0
. A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a 1.1.0
- Suporte à interoperabilidade de mídia do AndroidX de (prepare|play)From(MediaId|Uri|Search).
- Adição de
MEDIA_URI_PATH_SET_MEDIA_URI
eMEDIA_URI_QUERY_URI
àMediaConstants
.
Versão 1.2.0-rc01
1.º de setembro de 2021
Lançamento de androidx.media2:media2-*:1.2.0-rc01
. A versão 1.2.0-rc01 contém estas confirmações.
Correções de bugs
- O erro de ANR ao dispensar a notificação de mídia foi corrigido (Ifdcc2, b/148011394).
Versão 1.2.0-beta01
30 de junho de 2021
Lançamento de androidx.media2:media2-*:1.2.0-beta01
. A versão 1.2.0-beta01 contém estas confirmações.
Novos recursos
- Suporte à interoperabilidade de mídia do AndroidX de (prepare|play)From(MediaId|Uri|Search).
Mudanças na API
MEDIA_URI_PATH_SET_MEDIA_URI
eMEDIA_URI_QUERY_URI
foram adicionados a MediaConstants.
Versão 1.2.0-alpha01
21 de abril de 2021
Lançamento de androidx.media2:media2-*:1.2.0-alpha01
. A versão 1.2.0-alpha01 contém estas confirmações.
Mudanças na API
- Adição de compatibilidade para (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)
Correções de bugs
- Correção de um problema de impasse causado por blocos sincronizados desnecessários.
- Redefinir o player quando não houver itens reproduzíveis
- Permitir que OnCurrentMediaItemChanged use um item de mídia nulo
- Fazer notificação atualizada quando o item de mídia atual for mudado
- Corrigir a interoperabilidade com o controlador compatível logo após a sessão ser criada
Versão 1.1.3
Versão 1.1.3
21 de abril de 2021
Lançamento de androidx.media2:media2-*:1.1.3
. A versão 1.1.3 contém essas confirmações.
Correções de bugs
- Correção de um problema de impasse causado por blocos sincronizados desnecessários.
Versão 1.1.2
Versão 1.1.2
27 de janeiro de 2021
Lançamento de androidx.media2:media2-*:1.1.2
. A versão 1.1.2 contém estas confirmações.
Correções de bugs
- Correção do NPE de VersionedParcelable (I1ec28, b/177060207).
Versão 1.1.1
Versão 1.1.1
16 de dezembro de 2020
Lançamento de androidx.media2:media2-*:1.1.1
. A versão 1.1.1 contém estas confirmações.
Correções de bugs
- Fazer com que a notificação de mídia seja atualizada quando o item de mídia atual for alterado.
Versão 1.1.0
Versão 1.1.0
2 de dezembro de 2020
Lançamento de androidx.media2:media2-*:1.1.0
. A versão 1.1.0 contém estas confirmações.
Principais mudanças desde a versão 1.0.0
- Adição de mais APIs para gerenciar faixas de mídia.
- Melhor compatibilidade com a interoperabilidade com a biblioteca de mídia do AndroidX.
- Adição de
MediaSession#setMediaUri
. - Exposição de
MediaSessionCompat.Token
viaMediaSession#getSessionCompatToken()
.
- Adição de
Versão 1.1.0-rc01
28 de outubro de 2020
Lançamento de androidx.media2:media2-*:1.1.0-rc01
. A versão 1.1.0-rc01 contém estas confirmações.
- Correção de um problema em que MediaController notificava os callbacks enquanto mantinha um bloqueio, levando a possíveis impasses (I76c56).
- Correção de um problema em que
MediaSessionImplBase#isClosed()
podia falhar ao chamargetCurrentControllerInfo()
em umMediaSessionCompat
lançado (aosp/1423291). - Correção de um problema em que
MediaSession
de media2 não definia o ID ativo do item da fila comoPlaybackStateCompat
(aosp/1421652). - Adição da sinalização
BIND_INCLUDE_CAPABILITIES
durante a vinculação ao serviço, o que permite que aplicativos de mídia headless acessem o local se tiverem a permissão. Isso é útil principalmente para apps Android Auto (aosp/1440731).
Versão 1.1.0-beta01
16 de setembro de 2020
Lançamento de androidx.media2:media2-*:1.1.0-beta01
. A versão 1.1.0-beta01 contém estas confirmações.
Correções de bugs
- Redefinição da posição atual quando o item de mídia for modificado.
- Envio dos metadados e do estado de armazenamento em buffer quando conectado.
- Correção de falhas ao enviar dados grandes entre uma sessão e um controlador.
- Adição de
<queries>
ao manifesto para media e media2 para o Android 11. - Correção de NPE para
MediaController.getPlaylist()
. - Desativação da barra de progresso de
MediaControlView
quando o comando de busca não for permitido. - Envio de notificação para
PlaybackStateCompat
quando o item de mídia atual de uma sessão é modificado. - Correção da criação de pacote de
SessionPlayer.TrackInfo
.
Versão 1.1.0-alpha01
24 de junho de 2020
Lançamento de androidx.media2:media2-*:1.1.0-alpha01
. A versão 1.1.0-alpha01 contém estas confirmações.
Correções de bugs
- Correção do problema de tempo ao atualizar metadados (I45567 e b/143999611).
- SessionResult preservará o MediaItem de PlayerResult (I927b0 e b/154885520).
- Correção de um bug em que
MediaController#setVolumeTo()
poderia mudar o volume incorreto do fluxo (I76870, b/151204736, links em inglês).
Versão 1.0.3
Versão 1.0.3
19 de fevereiro de 2020
Lançamento de androidx.media2:media2-*:1.0.3
. A versão 1.0.3 do media2-{common,player,session}
contém essas confirmações, e a Versão 1.0.3 do media2-widget
contém essas confirmações (links em inglês).
Correções de bugs
- Correção de uma NullPointerException ao criar MediaController com um callback nulo.
- Correção de um problema em que
onPlaylistChanged()
não era chamado depois deMediaPlayer.setMediaItem
.
Versão 1.0.2
Versão 1.0.2
5 de fevereiro de 2020
Lançamento de androidx.media2:media2-*:1.0.2
. A versão 1.0.2 do media2-{common,player,session}
contém essas confirmações, e a Versão 1.0.2 do media2-widget
contém essas confirmações (links em inglês).
Correções de bugs
- Correção de uma
IndexOutOfBoundsException
noMediaPlayer#getSelectedTrack()
(aosp/987003). - Melhoria no gerenciamento do caso em que o ExoPlayer chama getDuration() e o item de mídia não existe (aosp/987484).
- Correção de um bug em que o ExoPlayer não gera uma
IllegalStateException
quandogetDuration()
é chamado em um estadoIDLE
(aosp/987246). - Proibição de Parcelables personalizados em media2 (aosp/1091056).
- Correção de um problema que causava a suspensão em
close()
(aosp/1096455). - MediaBrowser: melhoria do gerenciamento de erros em
subscribe()
comMediaBrowserService
(aosp/1158057). - Correção de uma falha do MediaController com o Framework MediaSession (aosp/1177663).
- Ausência de notificações com informações da sessão por callbacks quando a conexão é estabelecida (aosp/1195030 e b/142925848).
- Correção de um problema em que um SessionResult pode ser enviado inesperadamente mais de uma vez pelo MediaController (aosp/1198634).
- Correção de um problema em que o MediaController podia enviar comandos não permitidos para o MediaSession. Portanto, o MediaSession agora envia
RESULT_ERROR_PERMISSION_DENIED
(aosp/1204183). - Correção de um problema de inconsistência com
MediaControllerView#setPlayer
(aosp/987004).
Versão 1.0.1
Versão 1.0.1
9 de outubro de 2019
Lançamento de androidx.media2:media2-*:1.0.1
. A versão 1.0.1 do androidx.media2:media2-{player, session}:1.0.1
contém essas confirmações, e a Versão 1.0.1 de androidx.media2:media2-widget:1.0.1
contém essas confirmações (links em inglês).
Correções de bugs
- Correção de uma RuntimeException quando uma subclasse de MediaItem era enviada pelo do processo (aosp/1098971).
- Correção de um problema em que o MediaPlayer só chamava
onCurrentMediaItemChanged()
uma vez ao tocar uma playlist. - Correção de problema em que o MediaPlayer podia tocar uma playlist com mais de dois itens (aosp/1108440).
- Correção de um problema em que o player continuava a tocar no SurfaceView, mesmo que estivesse invisível.
- Correção de um problema de reprodução que ocorria quando uma chamada era feita para
setViewType
antes desetPlayer
.
Versão 1.0.0
5 de setembro de 2019
Lançamento de androidx.media2:media2-*:1.0.0
. Essas são as confirmações incluídas no media2-{player, session}:1.0.0, e essas são as confirmações incluídas no media2-widget:1.0.0 (links em inglês).
Principais recursos do Media2 1.0.0
Media2 é a última geração das seguintes APIs de mídia: MediaSession
, MediaController
, MediaBrowser
, MediaBrowserService
, VideoView
e MediaControlView
.
media2.player.MediaPlayer
- Na maioria das vezes, as APIs correspondem a
android.media.MediaPlayer
, e o mecanismo por trás é o ExoPlayer. - Foco de áudio integrado e gerenciamento de ruídos.
- Implementa SessionPlayer.
- Na maioria das vezes, as APIs correspondem a
media2.session.MediaSession
- Fornece controles de permissão refinados.
- Compatível com layouts personalizados.
- Fácil de usar com SessionPlayer, como
androidx.media2.player.MediaPlayer
. - Interoperável com
MediaControllerCompat
.
media2.session.MediaSessionService
- Uma versão leve de
MediaLibraryService
. - Oferece gerenciamento do ciclo de vida do serviço para reprodução em segundo plano.
- Interoperável com
MediaControllerCompat
eMediaBrowserServiceCompat
.
- Uma versão leve de
media2.session.MediaLibraryService
- Compatível com uma melhor paginação para navegar por itens de mídia ou resultados de pesquisa que contêm muitos itens.
- Interoperável com
MediaControllerCompat
eMediaBrowserServiceCompat
.
media2.session.MediaController
- Pode se conectar a
MediaSession
,MediaSessionService
eMediaLibraryService
. - Interoperável com
MediaSessionCompat
eMediaBrowserServiceCompat
.
- Pode se conectar a
media2.session.MediaBrowser
- Herda
MediaController
. - Pode se conectar a
MediaSession
,MediaSessionService
eMediaLibraryService
. - Interoperável com
MediaSessionCompat
eMediaBrowserServiceCompat
.
- Herda
media2.widget.VideoView
- Contém toda a funcionalidade de
android.widget.VideoView
. - Fornece alternância entre
TextureView
eSurfaceView
. - Pode trabalhar com
MediaSession
.
- Contém toda a funcionalidade de
media2.widget.MediaControlView
- Melhor aparência.
- Contém toda a funcionalidade de
android.widget.MediaController
. - Fornece a seleção de faixas de legenda, a seleção da velocidade de reprodução e o modo de tela inteira.
Versão 1.0.0-rc02
22 de agosto de 2019
O androidx.media2:media2-*:1.0.0-rc02
foi lançado, e as alterações incluídas nessa versão podem ser encontradas aqui. Essa versão inclui androidx.media2:media2-widget:1.0.0-rc02
, e as alterações incluídas nessa versão podem ser encontradas aqui.
Novos recursos
setPlayer
ousetController
não podem mais ser chamados peloMediaControlView
(MCV) quando oMediaControlView
pertence a umVideoView
.
Correções de bugs
MediaControlView
: os botões "Next" e "Previous" são clicáveis somente quando há itens de mídia seguintes ou anteriores.MediaControlView
: correção de umaNullPointerException
inconsistente quandoonAttachedToWindow()
era chamado.- O Media2 Widget agora gerencia os metadados do novo item de mídia corretamente quando o item de mídia atual é alterado.
Media2-Widget Versão 1.0.0-beta01
2 de julho de 2019
Lançamento de androidx.media2:media2-widget:1.0.0-beta01
. As confirmações incluídas nessa versão podem ser encontradas aqui.
Novos recursos
- Reprodução em segundo plano: em vez de criar o player dentro do VideoView, o VideoView pode usar o SessionPlayer ou o MediaController para que o app passe para o modo de reprodução em segundo plano sem problemas.
- Remoção da dependência da biblioteca media2-player.
onViewTypeChangedListener
itens adicionados.
Mudanças na API
- Mudança da visibilidade de pública para protegida:
VideoView.onMeasure(int, int)
VideoView.onAttachedToWindow()
VideoView.onDetachedFromWindow()
MediaControlView.onMeasure(int, int)
- Removido:
VideoView.getSessionToken()
VideoView.setAudioAttributes(AudioAttributesCompat)
VideoView.setMedaItem(MediaItem)
MediaControlView.setSessionToken(SessionToken)
- Adicionadas:
VideoView.setMediaController(MediaController)
VideoView.getMediaControlView()
VideoView.setMediaController(MediaController)
VideoView.setPlayer(SessionPlayer)
VideoView.setOnViewTypeChangedListener()
MediaControlView.setPlayer(SessionPlayer)
MediaControlView.setMediaController(MediaContoller)
Versão 1.0.0-rc01
18 de junho de 2019
Lançamento de androidx.media2:media2-common:1.0.0-rc01
, androidx.media2:media2-player:1.0.0-rc01
e androidx.media2:media2-session:1.0.0-rc01
. As confirmações incluídas nessa versão podem ser encontradas aqui.
Mudanças na API
As dependências de
ListenableFuture
foram migradas de volta para a implementação autônoma do Guava.Se você tiver destinos de teste dependentes do artefato Guava completo, poderá encontrar um conflito de resolução de dependência ao usar determinadas versões do Plug-in do Android para Gradle. Se você encontrar um erro
Could not resolve all artifacts
envolvendoListenableFuture
, poderá solucionar o problema temporariamente adicionandoandroid.dependency.useConstraints=false
à configuração de compilação do projeto. No momento, estamos trabalhando em uma correção permanente no Plug-in do Android para Gradle que será lançada no futuro.
Versão 1.0.0-beta02
5 de junho de 2019
Lançamento de androidx.media2:media2-common:1.0.0-beta02
, androidx.media2:media2-player:1.0.0-beta02
e androidx.media2:media2-session:1.0.0-beta02
. As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- A configuração da velocidade de reprodução negativa em androidx.media.player.MediaPlayer retornará RESULT_ERROR_BAD_VALUE.
- Substituição do Guava ListenableFuture pela implementação do Jetpack (aosp/968828).
Versão 1.0.0-beta01
7 de maio de 2019
Lançamento de androidx.media2:media2-common:1.0.0-beta01
, androidx.media2:media2-player:1.0.0-beta01
e androidx.media2:media2-session:1.0.0-beta01
. As confirmações incluídas nessa versão podem ser encontradas aqui.
Novos recursos
- Bibliotecas separadas em três partes: media2-common, media2-player e media2-session.
- Alteração de
IllegalPointerException
paraNullPointerException
para os argumentos nulos marcados como @NonNull.
Mudanças na API
- Lançamento de
MediaController.Builder
. - Adicionados métodos setter para os campos opcionais de
FileMediaItem.Builder
. MediaController
eMediaBrowser
podem enviar dicas de conexão do aplicativo paraMediaSession
,MediaSessionService
ouMediaLibraryService
.- Renomeação de alguns métodos para seguir as APIs Media2 do Android 10.
Versão 1.0.0-alpha04
17 de dezembro de 2018
Mudanças na API
- As seguintes classes foram renomeadas:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- As seguintes classes foram mescladas:
DataSourceDesc2
eMediaItem2
foram combinadas emMediaItem
.MediaPlaylistAgent
eMediaPlayerConnector
foram combinadas emSessionPlayer
.
- Adicionadas as seguintes subclasses de
Rating
:HeartRating
,PercentageRating
,StarRating
eThumbRating
. Media2
agora usaListenableFuture
para métodos assíncronos.