סוגי משטחים

בדף הזה מתוארים הסוגים השונים של פלטפורמות שאפשר להשתמש בהן להפעלת סרטונים באמצעות 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, פתרון האינטראופרביליות משתמש ב-Composable‏ AndroidView כדי לעטוף את SurfaceView ואת TextureView. שני רכיבי ה-Composable שמתאימים לכך הם AndroidExternalSurface ו-AndroidEmbeddedExternalSurface.

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

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