ভিউ-ভিত্তিক UI ব্যবহার করা শুরু করা

নির্ভরতা যোগ করুন

Kotlin

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

গ্ৰুভি

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

PlayerView

সবচেয়ে গুরুত্বপূর্ণ কম্পোনেন্ট হল PlayerView, মিডিয়া প্লেব্যাকের জন্য একটি ভিউ। PlayerView প্লেব্যাক চলাকালীন ভিডিও, ছবি, সাবটাইটেল ও অ্যালবাম আর্ট দেখায়, সেইসাথে প্লেব্যাক কন্ট্রোলও দেখায়।

PlayerView-এর কাছে Player ইনস্ট্যান্স অ্যাটাচ ও ডিটাচ (null পাস করার মাধ্যমে) করার জন্য setPlayer() পদ্ধতি আছে।

PlayerView ভিডিও, ছবি ও অডিও প্লেব্যাক, দুটির জন্যই ব্যবহার করা যেতে পারে। এটি ভিডিও প্লেব্যাকের ক্ষেত্রে ভিডিও ও সাবটাইটেল, ইমেজ প্লেব্যাকের ক্ষেত্রে বিটম্যাপ রেন্ডার করে এবং অডিও ফাইলে মেটাডেটা হিসেবে অন্তর্ভুক্ত আর্টওয়ার্ক দেখাতে পারে। অন্যান্য UI কম্পোনেন্টের মতো আপনি এটি আপনার লেআউট ফাইলে অন্তর্ভুক্ত করতে পারেন। যেমন, নিম্নলিখিত XML-এর সাথে একটি PlayerView অন্তর্ভুক্ত করা যেতে পারে:

<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 পদ্ধতিতে এটি খোঁজা যেতে পারে:

Kotlin

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 কল করে এটি ভিউতে অ্যাটাচ করা যেতে পারে:

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

জাভা

// 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-এর সাথে কাস্টম কন্ট্রোলার প্রদান করে কাস্টমাইজ করা যেতে পারে।

সারফেসের ধরন বেছে নিন

PlayerView-এর surface_type অ্যাট্রিবিউট আপনাকে ভিডিও প্লেব্যাকের জন্য ব্যবহৃত সারফেসের ধরন সেট করতে দেয়। অনুমোদিত ভ্যালু হল surface_view, texture_view, spherical_gl_surface_view (যা স্ফেরিক্যাল ভিডিও প্লেব্যাকের জন্য বিশেষ ভ্যালু), video_decoder_gl_surface_view (যা এক্সটেনশন রেন্ডারার ব্যবহার করে ভিডিও রেন্ডারিংয়ের জন্য) এবং none (শুধুমাত্র অডিও প্লেব্যাকের জন্য)। কোন সারফেসের ধরন বেছে নিতে হবে সেই সম্পর্কে আরও তথ্য সারফেস পৃষ্ঠায় পাওয়া যাবে।