Media2

Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
19 de fevereiro de 2020 1.0.3 - - -

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:

    dependencies {
        def media2_version = "1.0.3"

        // 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 compilação.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema (link em inglês)

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.0.3

Versão 1.0.3

19 de fevereiro de 2020

androidx.media2:media2-*:1.0.3 é lançado. 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 de MediaPlayer.setMediaItem

Versão 1.0.2

Versão 1.0.2

5 de fevereiro de 2020

androidx.media2:media2-*:1.0.2 é lançado. 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 no MediaPlayer#getSelectedTrack() (aosp/987003, link em inglês).
  • Melhoria no gerenciamento do caso em que o ExoPlayer chama getDuration() e o item de mídia não existe (aosp/987484, link em inglês).
  • Correção de um bug em que o ExoPlayer não gera um IllegalStateException quando getDuration() é chamado em um estado IDLE (aosp/987246, link em inglês).
  • Proibição de Parcelables personalizados em media2 (aosp/1091056, link em inglês).
  • Correção de um problema que causava a suspensão em close() (aosp/1096455, link em inglês).
  • MediaBrowser: melhoria do gerenciamento de erros em subscribe() com MediaBrowserService (aosp/1158057, link em inglês).
  • Correção de uma falha do MediaController com o Framework MediaSession (aosp/1177663, link em inglês).
  • Ausência de notificações com informações da sessão por meio de callbacks quando a conexão é estabelecida (aosp/1195030, b/142925848, links em inglês).
  • Correção de um problema em que um SessionResult pode ser enviado inesperadamente mais de uma vez pelo MediaController (aosp/1198634, link em inglês).
  • Correção de um problema em que o MediaController pode enviar comandos não permitidos para o MediaSession. Portanto, o MediaSession agora envia RESULT_ERROR_PERMISSION_DENIED (aosp/1204183, link em inglês).
  • Correção de um problema de inconsistência com MediaControllerView#setPlayer (aosp/987004, link em inglês).

Versão 1.0.1

Versão 1.0.1

9 de outubro de 2019

Lançamento do 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 por meio do processo (aosp/1098971, link em inglês)
  • 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, link em inglês)
  • 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 de setPlayer

Versão 1.0.0

5 de setembro de 2019

Lançamento do 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 subjacente é o ExoPlayer
    • Foco de áudio integrado e gerenciamento de ruídos
    • Implementa SessionPlayer
  • 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 e MediaBrowserServiceCompat
  • 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 e MediaBrowserServiceCompat
  • media2.session.MediaController
    • Pode se conectar a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperável com MediaSessionCompat e MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Herda MediaController
    • Pode se conectar a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperável com MediaSessionCompat e MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Contém toda a funcionalidade de android.widget.VideoView
    • Fornece alternância entre TextureView e SurfaceView
    • Pode trabalhar com MediaSession
  • 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 (link em inglês). 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 (link em inglês).

Novos recursos

  • setPlayerou setController não podem mais ser chamados pelo MediaControlView (MCV) quando o MediaControlView pertence a um VideoView.

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 uma NullPointerException inconsistente quando onAttachedToWindow() 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 do androidx.media2:media2-widget:1.0.0-beta01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

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)
  • A função
      foi removida.
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Adicionado:
    • 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 (link em inglês).

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 envolvendo ListenableFuture, poderá solucionar o problema temporariamente adicionando android.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 posteriormente.

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 aqui (link em inglês).

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 (link em inglês).

Novos recursos

  • Bibliotecas separadas em três partes: media2-common, media2-player e media2-session.
  • Alteração de IllegalPointerException para NullPointerException 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 e MediaBrowser podem enviar dicas de conexão do aplicativo para MediaSession, MediaSessionService ou MediaLibraryService
  • 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:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • As seguintes classes foram mescladas:
    • DataSourceDesc2 e MediaItem2 foram combinadas em MediaItem
    • MediaPlaylistAgent e MediaPlayerConnector foram combinadas em SessionPlayer
  • Adicionadas as seguintes subclasses de Rating: HeartRating, PercentageRating, StarRating e ThumbRating
  • Media2 agora usa ListenableFuture para métodos assíncronos