Iniziare a utilizzare l'interfaccia utente basata sulle visualizzazioni

Aggiungi la dipendenza

Kotlin

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

Groovy

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

PlayerView

Il componente più importante è PlayerView, una visualizzazione per la riproduzione dei contenuti multimediali. PlayerView mostra video, immagini, sottotitoli codificati e copertine degli album durante la riproduzione, nonché i controlli di riproduzione.

PlayerView ha un metodo setPlayer() per collegare e scollegare (tramite passaggio di null) istanze Player.

PlayerView può essere utilizzato per la riproduzione di video, immagini e audio. Esegue il rendering di video e sottotitoli in caso di riproduzione video, bitmap per la riproduzione di immagini e può visualizzare le copertine incluse come metadati nei file audio. Puoi includerlo nei file di layout come qualsiasi altro componente dell'interfaccia utente. Ad esempio, un PlayerView può essere incluso nel seguente 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"/>

Lo snippet riportato sopra mostra che PlayerView fornisce diversi attributi. Questi attributi possono essere utilizzati per personalizzare il comportamento della visualizzazione, nonché il suo aspetto. La maggior parte di questi attributi dispone di metodi setter corrispondenti, che possono essere utilizzati per personalizzare la visualizzazione in fase di runtime. La documentazione di PlayerView elenca questi attributi e metodi setter in modo più dettagliato.

Per un'esperienza utente più confortevole, valuta la possibilità di aggiungere l'attributo keepScreenOn Android o di impostare un wake lock, se utilizzi ExoPlayer. Puoi esaminare altre azioni che mantengono attivo il dispositivo nelle pagine relative al lavoro in background.

android:keepScreenOn="true"

Una volta dichiarata la visualizzazione nel file di layout, è possibile cercarla nel metodo onCreate dell'attività:

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);
}

Una volta inizializzato, un player può essere collegato alla visualizzazione chiamando 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 è una delle PlayerView sotto-visualizzazioni che contiene la barra di avanzamento e i pulsanti per controllare la riproduzione. Tieni presente che PlayerControlView non è destinato a essere utilizzato come componente autonomo al di fuori di PlayerView. Può essere personalizzato impostando gli attributi su PlayerView (che verranno passati a PlayerControlView) o fornendo un controller personalizzato con android:id="@id/exo_controller.

Scegli un tipo di piattaforma

L'attributo surface_type di PlayerView consente di impostare il tipo di superficie utilizzata per la riproduzione video. I valori consentiti sono surface_view, texture_view, spherical_gl_surface_view (che è un valore speciale per la riproduzione di video sferici), video_decoder_gl_surface_view (per il rendering video tramite renderer di estensioni) e none (solo per la riproduzione audio). Per maggiori informazioni su quale tipo di piattaforma scegliere, consulta la pagina Piattaforma.