סוגי משטחים

בדף הזה מתוארים הסוגים השונים של משטחים שאפשר להשתמש בהם להפעלת סרטונים באמצעות Media3, ואיך בוחרים את הסוג המתאים לתרחיש לדוגמה. למידע נוסף על אובייקטים של Surface ב-Android, אפשר לעיין במסמכי העזרה בנושא גרפיקה.

בחירת סוג פלטפורמה ל-PlayerView

המאפיין surface_type של PlayerView מאפשר להגדיר את סוג המשטח שבו נעשה שימוש להפעלת הסרטון. הערכים המותרים הם:

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) – להפעלת סרטונים גולמיים
  • video_decoder_gl_surface_view (VideoDecoderGLSurfaceView) – עיבוד וידאו באמצעות מנועי עיבוד של תוספים
  • none – לצורך הפעלת אודיו בלבד. מומלץ להשתמש באפשרות הזו כדי להימנע מיצירת פלטפורמה, כי הדבר עלול להיות יקר.

אם התצוגה מיועדת להפעלת סרטון רגילה, צריך להשתמש ב-surface_view או ב-texture_view. ל-SurfaceView יש כמה יתרונות על פני TextureView בהפעלת סרטונים:

  • צריכת אנרגיה נמוכה יותר במכשירים רבים.
  • תזמון מדויק יותר של הפריימים, וכתוצאה מכך הפעלה חלקה יותר של הסרטון.
  • תמיכה בפלט וידאו HDR באיכות גבוהה יותר במכשירים מתאימים.
  • תמיכה בפלט מאובטח כשמפעילים תוכן מוגן DRM.
  • היכולת ליצור עיבוד (רנדור) של תוכן וידאו ברזולוציה המלאה של המסך במכשירי Android TV שמגדילים את הרזולוציה של שכבת ממשק המשתמש.

לכן, במידת האפשר, עדיף להשתמש ב-SurfaceView במקום ב-TextureView. צריך להשתמש ב-TextureView רק אם SurfaceView לא עונה על הצרכים שלכם. דוגמה לכך היא כשדרושות אנימציות חלקות או גלילה חלקה של שטח הסרטון בגרסאות Android ישנות יותר מ-7.0 (רמת API ‏24), כפי שמתואר בהערות הבאות. במקרה כזה, עדיף להשתמש ב-TextureView רק כאשר הערך של SDK_INT קטן מ-24 (Android 7.0), וב-SurfaceView במקרים אחרים.

בחירת סוג משטח ב-Compose

ב-Compose, פתרון ה-interop משתמש ב-AndroidView Composable כדי לעטוף את SurfaceView ואת TextureView. שתי ה-Composables שתואמות לזה הן AndroidExternalSurface ו-AndroidEmbeddedExternalSurface.

המודול ui-compose של Media3 מספק רכיב Composable מסוג PlayerSurface שמקשר את Player ל-Surface באופן שמתחשב במחזור החיים. סוגי המשטחים במקרה הזה הם:

אין סוג none, כי זה יתאים לאי הכללה של PlayerSurface בעץ של ממשק המשתמש של Compose.