Typy powierzchni

Na tej stronie opisujemy różne typy powierzchni, które można wykorzystać do odtwarzania filmów za pomocą Media3, oraz wyjaśniamy, jak wybrać odpowiedni typ w danym przypadku użycia. Aby dowiedzieć się więcej o obiektach Surface w Androidzie, przeczytaj tę dokumentację dotyczącą grafiki.

Wybieranie typu powierzchni w PlayerView

Atrybut surface_type w PlayerView pozwala określić typ powierzchni, na której odtwarzany jest film. Dozwolone wartości:

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) – do odtwarzania sferycznych filmów.
  • video_decoder_gl_surface_view (VideoDecoderGLSurfaceView) – renderowanie filmów za pomocą procesorów rozszerzeń
  • none – służy tylko do odtwarzania dźwięku i powinien być używany, aby uniknąć tworzenia powierzchni, ponieważ może to być kosztowne.

Jeśli widok służy do odtwarzania zwykłego filmu, należy użyć parametru surface_view lub texture_view. SurfaceView ma wiele zalet w porównaniu z TextureView w przypadku odtwarzania filmów:

  • znacznie obniżyć zużycie energii na wielu urządzeniach;
  • Dokładniejsze ustalanie czasu wyświetlania klatek, co zapewnia płynniejsze odtwarzanie filmów.
  • Obsługa danych wyjściowych wideo HDR o wyższej jakości na urządzeniach z tą funkcją.
  • Obsługa bezpiecznego wyjścia podczas odtwarzania treści chronionych przez DRM.
  • Możliwość renderowania treści wideo w pełnej rozdzielczości wyświetlacza na urządzeniach z Androidem TV, które powiększają warstwę interfejsu.

Dlatego w miarę możliwości należy preferować SurfaceView zamiast TextureView. TextureView należy używać tylko wtedy, gdy SurfaceView nie spełnia Twoich potrzeb. Przykładem jest płynne wyświetlanie animacji lub przewijanie powierzchni wideo w wersjach Androida 7.0 (interfejs API na poziomie 24) i starszych, jak opisano w tych notatkach. W tym przypadku zalecamy używanie TextureView tylko wtedy, gdy SDK_INT jest mniejsza niż 24 (Android 7.0), a w przeciwnym razie SurfaceView.

Wybieranie typu powierzchni w oknie tworzenia

W Compose rozwiązanie interoperacyjne używa komponentu AndroidView do otaczania komponentów SurfaceViewTextureView. 2 komponenty odpowiadające tym elementom: AndroidExternalSurfaceAndroidEmbeddedExternalSurface.

Moduł Media3 ui-compose udostępnia komponent PlayerSurface, który w sposób uwzględniający cykl życia łączy PlayerSurface. W tym przypadku typy powierzchni to:

Nie ma typu none, ponieważ oznaczałoby to nieuwzględnienie PlayerSurface w drzewie interfejsu Compose.