Adicionar a dependência
A biblioteca Media3 inclui dois módulos de interface baseados no Jetpack Compose. Não é necessário adicionar os dois, porque o Material3 depende do principal.
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.10.1")
implementation("androidx.media3:media3-ui-compose-material3:1.10.1")
Groovy
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.10.1"
implementation "androidx.media3:media3-ui-compose-material3:1.10.1"
Recomendamos muito que você desenvolva seu app com o Compose em primeiro lugar ou migre do uso de Views.
App de demonstração totalmente no Compose
Embora a biblioteca media3-ui-compose não inclua elementos combináveis prontos para uso (como botões, indicadores, imagens ou caixas de diálogo), você pode encontrar um app de demonstração
totalmente escrito em Compose que evita soluções de interoperabilidade, como
envolver PlayerView em AndroidView. O app de demonstração usa as classes de
detentores de estado da interface do módulo media3-ui-compose e a
biblioteca Compose Material3.
De qual biblioteca eu preciso?
Dependendo do nível de personalização necessário, você pode 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 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 fundamentais, como PlayerSurface e ContentFrame, além de
classes de manutenção de estado (por exemplo, PlayPauseButtonState, CurrentMediaItemState,
PlaylistState, ErrorState) que convertem o estado Player em estado da UI.
Essa biblioteca não oferece componentes do Material Design prontos para uso. Você é responsável por criar seus próprios componentes de interface e estilizar eles. Ele oferece controle máximo sobre a aparência, sendo ideal se você tiver 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 UI final do pipeline. Ele depende do
media3-ui-compose e inclui funções combináveis pré-criadas estilizadas
com componentes do Material3, 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 você pode personalizar ainda mais usando PlayerDefaults. O elemento combinável MiniController oferece uma
opção 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 de interface do zero. Você ainda pode 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 de interface | Elementos básicos, como PlayerSurface e ContentFrame, mas sem botões ou controles pré-estilizados. |
Fornece os elementos combináveis Player e MiniController e um conjunto completo de elementos combináveis pré-criados com estilo do Material3, como PlayPauseButton, SeekBackButton, PositionAndDurationText, ErrorText etc. |
| Gerenciamento de estado | Fornece titulares de remember...State para gerenciar a lógica. |
Gerencia o estado internamente, mas ainda é possível 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 | Criar uma interface do player com um sistema de design personalizado. Controle total sobre a aparência e a sensação. | Criar rapidamente uma interface do player que siga as diretrizes do Material Design 3. |