Tipi di superfici

Questa pagina descrive i diversi tipi di piattaforme che possono essere utilizzate per la riproduzione di video con Media3 e come scegliere il tipo giusto per il tuo caso d'uso. Per scoprire di più sugli oggetti Surface in Android, leggi questa documentazione relativa alle illustrazioni.

Scegli un tipo di dispositivo per PlayerView

L'attributo surface_type di PlayerView ti consente di impostare il tipo di superficie utilizzata per la riproduzione dei video. I valori consentiti sono:

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) - per la riproduzione di video sferici
  • video_decoder_gl_surface_view (VideoDecoderGLSurfaceView): rendering di video con i visualizzatori di estensioni
  • none, che è solo per la riproduzione audio e deve essere utilizzato per evitare di dover creare una superficie, perché questa operazione può essere costosa.

Se la visualizzazione è per la riproduzione di video normali, deve essere utilizzata surface_view o texture_view. SurfaceView offre una serie di vantaggi rispetto a TextureView per la riproduzione di video:

  • Riduzione significativa del consumo energetico su molti dispositivi.
  • Tempi dei fotogrammi più precisi, che si traducono in una riproduzione video più fluida.
  • Supporto per l'output video HDR di qualità superiore sui dispositivi idonei.
  • Supporto per l'output sicuro durante la riproduzione di contenuti protetti da DRM.
  • La possibilità di visualizzare i contenuti video alla massima risoluzione del display su dispositivi Android TV che eseguono l'upscaling del livello dell'interfaccia utente.

Pertanto, se possibile, è preferibile utilizzare SurfaceView anziché TextureView. TextureView deve essere utilizzato solo se SurfaceView non soddisfa le tue esigenze. Un esempio è quando sono richieste animazioni fluide o lo scorrimento della superficie video prima di Android 7.0 (livello API 24), come descritto nelle note che seguono. Per questo caso, è preferibile utilizzare TextureView solo quando SDK_INT è inferiore a 24 (Android 7.0) e SurfaceView in caso contrario.

Scegliere un tipo di superficie in Scrivi

In Compose, la soluzione di interoperabilità utilizza il Composable AndroidView per avvolgere SurfaceView e TextureView. I due Composable corrispondenti sono AndroidExternalSurface e AndroidEmbeddedExternalSurface.

Il modulo ui-compose Media3 fornisce un composable PlayerSurface che collega il Player a un Surface in modo consapevole del ciclo di vita. I tipi di superfici in questo caso sono:

Non esiste il tipo none, poiché ciò corrisponderebbe a non includere il PlayerSurface nella struttura dell'interfaccia utente di Compose.