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

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

کاتلین

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