بدء استخدام واجهة المستخدِم المستندة إلى "العروض"

إضافة التبعية

Kotlin

implementation("androidx.media3:media3-ui:1.10.0")

أنيق

implementation "androidx.media3:media3-ui:1.10.0"

PlayerView

المكوّن الأهم هو PlayerView، وهو طريقة عرض لتشغيل الوسائط. تعرض PlayerView الفيديو والصور والترجمة الفورية وصورة الألبوم أثناء التشغيل، بالإضافة إلى عناصر التحكّم في التشغيل.

يتضمّن PlayerView طريقة setPlayer() لربط مثيلات Player وفصلها (من خلال تمرير null).

يمكن استخدام PlayerView لتشغيل الفيديو والصوت والصورة. تعرض الفيديو والترجمة الفورية في حال تشغيل الفيديو، والصور النقطية في حال تشغيل الصور، ويمكنها عرض العمل الفني المضمّن كبيانات وصفية في الملفات الصوتية. يمكنك تضمينها في ملفات التنسيق مثل أي مكوّن آخر في واجهة المستخدم. على سبيل المثال، يمكن تضمين PlayerView باستخدام XML التالي:

<androidx.media3.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

يوضّح مقتطف الرمز أعلاه أنّ PlayerView يوفّر عدة سمات. يمكن استخدام هذه السمات لتخصيص سلوك طريقة العرض، بالإضافة إلى شكلها ومظهرها. تتضمّن معظم هذه السمات طرق تحديد القيمة المقابلة، يمكن استخدامها لتخصيص طريقة العرض في وقت التشغيل. تسرد مستندات PlayerView هذه السمات وطرق الضبط بمزيد من التفصيل.

للحصول على تجربة مستخدم أكثر راحة، ننصحك بإضافة سمة keepScreenOn Android أو ضبط قفل التنبيه، إذا كنت تستخدم ExoPlayer. يمكنك التحقيق في الإجراءات الأخرى التي تحافظ على بقاء الجهاز نشطًا في صفحات العمل في الخلفية.

android:keepScreenOn="true"

بعد تعريف طريقة العرض في ملف التنسيق، يمكن البحث عنها في طريقة onCreate للنشاط:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

بعد تهيئة مشغّل، يمكن ربطه بطريقة العرض من خلال استدعاء setPlayer:

Kotlin

// Instantiate the player.
val player = ExoPlayer.Builder(context).build()
// Attach player to the view.
playerView.player = player
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()

Java

// Instantiate the player.
player = new ExoPlayer.Builder(context).build();
// Attach player to the view.
playerView.setPlayer(player);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();

PlayerControlView

PlayerControlView هي إحدى طرق العرض الفرعية في PlayerView التي تحتوي على شريط التقدّم والأزرار للتحكّم في التشغيل. يُرجى العِلم أنّه ليس من المفترض استخدام PlayerControlView كمكوّن مستقل خارج PlayerView. يمكن تخصيصها من خلال ضبط السمات على PlayerView (التي سيتم تمريرها إلى PlayerControlView) أو توفير وحدة تحكّم مخصّصة باستخدام android:id="@id/exo_controller.

اختيار نوع مساحة العرض

تتيح لك سمة surface_type في PlayerView ضبط نوع مساحة العرض المستخدَمة لتشغيل الفيديو. القيم المسموح بها هي surface_view وtexture_view و spherical_gl_surface_view (وهي قيمة خاصة لتشغيل الفيديو الكروي ) وvideo_decoder_gl_surface_view (وهي لعرض الفيديو باستخدام عارضات الإضافات ) وnone (لتشغيل الصوت فقط). يمكنك العثور على مزيد من المعلومات حول نوع مساحة العرض التي يجب اختيارها في صفحة مساحة العرض.