شروع به کار با UI مبتنی بر Views

وابستگی را اضافه کنید

کاتلین

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

گرووی

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

پخش کننده

مهم‌ترین جزء 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 چندین ویژگی ارائه می‌دهد. از این ویژگی‌ها می‌توان برای سفارشی‌سازی رفتار view و همچنین ظاهر و حس آن استفاده کرد. اکثر این ویژگی‌ها دارای متدهای تنظیم‌کننده‌ی مربوطه هستند که می‌توانند برای سفارشی‌سازی view در زمان اجرا استفاده شوند. مستندات PlayerView این ویژگی‌ها و متدهای تنظیم‌کننده را با جزئیات بیشتری فهرست می‌کند.

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

android:keepScreenOn="true"

پس از اینکه view در فایل layout تعریف شد، می‌توان آن را در متد onCreate مربوط به activity جستجو کرد:

کاتلین

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 به view متصل کرد:

کاتلین

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