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

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

Kotlin

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

গ্ৰুভি

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

PlayerView

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

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

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 (শুধুমাত্র অডিও প্লেব্যাকের জন্য)। কোন ধরনের সারফেস বেছে নিতে হবে সেই সম্পর্কে আরও তথ্য সারফেস পৃষ্ঠায় পাওয়া যাবে।