شروع به کار با «میانای کاربری مبتنی بر نماها»

افزودن وابستگی

کاتلین

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

شیک

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

PlayerView

مهم‌ترین مؤلفه PlayerView است که نمایی برای بازپخش رسانه است. PlayerView ویدیو، تصاویر، زیرنویس، و جلد آلبوم را درطول بازپخش، و همچنین کنترل‌های بازپخش را نمایش می‌دهد.

‫PlayerView دارای روش setPlayer() برای پیوست کردن و جدا کردن (با رد کردن null) نمونه‌های Player است.

از 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 این مشخصه‌ها و روش‌های تنظیم‌کننده را با جزئیات بیشتر فهرست می‌کند.

برای تجربه کاربری راحت‌تر، اگر از ExoPlayer استفاده می‌کنید، افزودن مشخصه keepScreenOn Android یا تنظیم قفل بیداری را درنظر بگیرید. می‌توانید کنش‌های دیگری را که دستگاه را بیدار نگه می‌دارد در صفحه‌های کار پس‌زمینه بررسی کنید.

android:keepScreenOn="true"

وقتی نما در فایل چیدمان اعلام شد، می‌توان آن را در روش onCreate فعالیت جستجو کرد:

کاتلین

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

جاوا

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

وقتی پخش‌کننده مقداردهی اولیه شد، می‌توان آن را با فراخوانی setPlayer به نما پیوست کرد:

کاتلین

// 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()

جاوا

// 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 (فقط برای بازپخش صدا). اطلاعات بیشتر درباره اینکه کدام نوع سطح را انتخاب کنید در صفحه «سطح» دردسترس است.