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

Adicionar a dependência

Kotlin

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

Groovy

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

PlayerView

O componente mais importante é PlayerView, uma visualização para reprodução de mídia. O PlayerView mostra vídeos, imagens, legendas e a arte do álbum durante a reprodução, além dos controles de reprodução.

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

O 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 a arte da capa incluída como metadados em arquivos de áudio. É possível incluí-lo nos arquivos de layout como qualquer outro componente de IU. 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 oferece vários atributos. Esses atributos podem ser usados para personalizar o comportamento da visualização, bem como a aparência. 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 do PlayerView lista esses atributos e métodos setter com mais detalhes.

Para uma experiência do usuário mais confortável, adicione o keepScreenOn atributo do Android ou defina um wake lock, se estiver usando o ExoPlayer. Você pode 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 foi projetado para 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.

Escolher um tipo de plataforma

O atributo surface_type do PlayerView permite definir o tipo de plataforma usada para 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 (para renderização de vídeo usando renderizadores de extensão) e none (somente para reprodução de áudio). Mais informações sobre qual tipo de plataforma escolher podem ser encontradas na página Plataforma.