أنواع مساحات العرض

توضّح هذه الصفحة الأنواع المختلفة من مساحات العرض التي يمكن استخدامها لتشغيل الفيديو باستخدام 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 بجودة أعلى على الأجهزة المؤهَّلة
  • إمكانية إخراج المحتوى المحمي بموجب إدارة الحقوق الرقمية بشكل آمن
  • إمكانية عرض محتوى الفيديو بدقة العرض الكاملة على أجهزة Android TV التي تزيد من دقة طبقة واجهة المستخدم

لذلك، يجب تفضيل SurfaceView على TextureView كلما أمكن ذلك. يجب استخدام TextureView فقط إذا لم تستوفِ SurfaceView احتياجاتك. أحد الأمثلة على ذلك هو الحالات التي تتطلّب عرض رسوم متحركة سلسة أو تمرير سطح الفيديو بسلاسة قبل الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات)، كما هو موضّح في الملاحظات التالية. في هذه الحالة، من الأفضل استخدام TextureView فقط عندما تكون قيمة SDK_INT أقل من 24 (الإصدار 7.0 من نظام التشغيل Android) واستخدام SurfaceView في الحالات الأخرى.

اختيار نوع سطح في Compose

في Compose، يستخدم حلّ التشغيل التفاعلي AndroidView Composable لتضمين SurfaceView وTextureView. إنّ العنصرَين القابلَين للإنشاء اللذين يتوافقان مع ذلك هما AndroidExternalSurface وAndroidEmbeddedExternalSurface.

يوفّر وحدة ui-compose في Media3 عنصر PlayerSurface قابل للإنشاء يربط Player بـ Surface بطريقة تراعي مراحل النشاط. أنواع السطح في هذه الحالة هي:

لا يتوفّر النوع none، لأنّ ذلك يعني عدم تضمين PlayerSurface في شجرة واجهة مستخدم Compose.