Adicionar a dependência
A biblioteca Media3 inclui dois módulos de interface baseados no Jetpack Compose. Não é necessário adicionar as duas, porque a do Material3 depende da principal.
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.11.1")
implementation("androidx.media3:media3-ui-compose-material3:1.11.1")
Groovy
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.11.1"
implementation "androidx.media3:media3-ui-compose-material3:1.11.1"
Recomendamos que você desenvolva seu app priorizando o Compose ou migre do uso de visualizações.
App de demonstração totalmente em Compose
Embora a biblioteca media3-ui-compose não inclua elementos de composição prontos para uso
(como botões, indicadores, imagens ou caixas de diálogo), você pode encontrar um app de demonstração
escrito totalmente no Compose que evita soluções de interoperabilidade, como
encapsular PlayerView em AndroidView. O app de demonstração usa as classes de detentor de estado
da interface do módulo media3-ui-compose e da
biblioteca Compose Material3.
De qual biblioteca eu preciso?
Dependendo do nível de personalização necessário, é possível escolher entre duas
bibliotecas do Media3 Compose. Para entender a diferença, pense no
pipeline de produção do estado da interface: Business logic → UI logic → UI.
Use o media3-ui-compose para ter controle total sobre os componentes da interface.
Essa biblioteca fornece a conexão Business logic → UI logic. Ele contém
componentes básicos, como PlayerSurface e ContentFrame, além de
classes de detentor de estado (por exemplo, PlayPauseButtonState, CurrentMediaItemState,
PlaylistState, ErrorState) que convertem o estado de Player em estado da interface.
Essa biblioteca não oferece componentes do Material Design prontos para uso. Você é responsável por criar e estilizar seus próprios componentes de interface. Ele oferece o máximo de controle sobre a aparência, sendo ideal para quem tem um sistema de design altamente personalizado.
Use media3-ui-compose-material3 para uma integração mais rápida com o Material
Design.
Essa biblioteca fornece a parte final UI do pipeline. Ela depende de
media3-ui-compose e inclui funções combináveis pré-criadas que são estilizadas
com componentes do Material 3, incluindo os elementos combináveis
Player e MiniController. O elemento combinável Player oferece uma experiência completa de reprodução de mídia
com vídeo, controles e barra de progresso, que pode ser personalizada
com PlayerDefaults. O elemento de composição MiniController oferece uma
funcionalidade compacta para controlar o player enquanto exibe informações sobre o
item de mídia atual. Isso elimina a necessidade de criar seus próprios botões e outros elementos da interface do zero. Ainda é possível personalizar o tema, as cores e os
ícones desses componentes, mas a implementação principal é fornecida para você.
Resumo
| Recurso | media3-ui-compose |
media3-ui-compose-material3 |
|---|---|---|
| Componentes da interface | Elementos básicos, como PlayerSurface e ContentFrame, mas sem botões ou controles pré-estilizados. |
Oferece os elementos combináveis Player e MiniController e um conjunto completo de elementos combináveis pré-criados com o estilo do Material 3, como PlayPauseButton, SeekBackButton, PositionAndDurationText, ErrorText etc. |
| Gerenciamento de estado | Oferece detentores de remember...State para gerenciar a lógica. |
Gerencia o estado internamente, mas você ainda pode acessar os detentores de estado, se necessário. |
| Dependências | androidx.compose.foundation |
media3-ui-compose, androidx.compose.material3, com.google.android.material |
| Caso de uso principal | Como criar uma interface do player com um sistema de design personalizado. Controle total sobre a aparência. | Criar rapidamente uma interface do player que siga as diretrizes do Material Design 3. |