Adicionar a dependência
Kotlin
implementation("androidx.media3:media3-ui:1.11.1")
Groovy
implementation "androidx.media3:media3-ui:1.11.1"
PlayerView
O componente mais importante é PlayerView, uma visualização para reprodução de mídia.
O PlayerView mostra vídeos, imagens, legendas e capas de álbuns durante a reprodução,
além de controles de mídia.
PlayerView tem um método setPlayer() para anexar e remover (transmitindo
null) instâncias de Player.
PlayerView pode ser usado para reproduções de vídeo, imagem e áudio. Ele renderiza
vídeos e legendas no caso de reprodução de vídeo, bitmaps para reprodução de imagens
e pode mostrar artes incluídas como metadados em arquivos de áudio. Você pode incluí-lo
nos arquivos de layout como qualquer outro componente de interface. Por exemplo, um PlayerView
pode ser incluído com o seguinte XML:
<androidx.media3.ui.PlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:show_buffering="when_playing"
app:show_shuffle_button="true"/>
O snippet acima mostra que PlayerView fornece vários atributos.
Esses atributos podem ser usados para personalizar o comportamento da visualização, bem como a
aparência dela. A maioria desses atributos tem métodos setter correspondentes, que
podem ser usados para personalizar a visualização no momento da execução. A documentação de PlayerView
lista esses atributos e métodos setter em mais detalhes.
Para uma experiência do usuário mais confortável, adicione o atributo Android keepScreenOn
ou defina um wake lock, se estiver usando o ExoPlayer. É possível
investigar outras ações que mantêm o dispositivo ativado nas páginas de trabalho em
segundo plano.
android:keepScreenOn="true"
Depois que a visualização é declarada no arquivo de layout, ela pode ser pesquisada no
método onCreate da atividade:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView = findViewById(R.id.player_view) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView = findViewById(R.id.player_view); }
Quando um player é inicializado, ele pode ser anexado à visualização chamando
setPlayer:
Kotlin
// Instantiate the player. val player = ExoPlayer.Builder(context).build() // Attach player to the view. playerView.player = player // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare()
Java
// Instantiate the player. player = new ExoPlayer.Builder(context).build(); // Attach player to the view. playerView.setPlayer(player); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare();
PlayerControlView
PlayerControlView é uma das subvisualizações de PlayerView que contém a
barra de progresso e os botões para controlar a reprodução. O PlayerControlView não
pode ser usado como um componente independente fora do PlayerView. Ele pode
ser personalizado definindo atributos em PlayerView (que serão transmitidos para
PlayerControlView) ou fornecendo um controlador personalizado com
android:id="@id/exo_controller.
Escolha um tipo de superfície
O atributo surface_type de PlayerView permite definir o tipo de superfície
usada para a reprodução de vídeo. Os valores permitidos são surface_view, texture_view,
spherical_gl_surface_view (que é um valor especial para reprodução de vídeo
esférico), video_decoder_gl_surface_view (que é para renderização de vídeo usando
renderizadores de extensão) e none (somente para reprodução de áudio). Para mais informações sobre
qual tipo de superfície escolher, consulte esta página.