Introdução à interface baseada em visualizações

Adicionar a dependência

Kotlin

implementation("androidx.media3:media3-ui:1.6.0")

Groovy

implementation "androidx.media3:media3-ui:1.6.0"

PlayerView

O componente mais importante é PlayerView, uma visualização para reprodução de mídia. PlayerView exibe vídeo, imagens, legendas e capa do álbum durante a reprodução, bem como os controles de reprodução.

O PlayerView tem um método setPlayer() para anexar e desconectar (transmitindo null) instâncias de Player.

O PlayerView pode ser usado para reprodução de vídeo, imagem e áudio. Ele renderiza vídeo e legendas no caso de reprodução de vídeo, bitmaps para reprodução de imagem e pode mostrar a arte incluída como metadados em arquivos de áudio. É possível 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 ilustra 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 setters correspondentes, que podem ser usados para personalizar a visualização no momento de execução. A documentação de PlayerView lista esses atributos e métodos de setter com mais detalhes.

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. PlayerControlView não foi projetado para ser usado como um componente independente fora de 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.

Escolher um tipo de plataforma

O atributo surface_type de PlayerView permite definir o tipo de superfície usado para a reprodução de vídeo. Os valores permitidos são surface_view, texture_view, spherical_gl_surface_view (um valor especial para reprodução de vídeo esférico), video_decoder_gl_surface_view (para renderização de vídeo usando renderizadores de extensão) e none (somente para reprodução de áudio). Confira mais informações sobre qual tipo de plataforma escolher na página Plataforma.