סוגי משטחים

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

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

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

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) – להפעלת סרטון ב-360°
  • 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, פתרון ה-Interop משתמש ב-AndroidView Composable כדי לעטוף את SurfaceView ואת TextureView. שני רכיבי ה-Composable שתואמים לכך הם AndroidExternalSurface ו-AndroidEmbeddedExternalSurface.

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

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