কাস্ট ফ্রেমওয়ার্কটি কিউয়িং ক্লাস প্রদান করে যা MediaQueueItem ইনস্ট্যান্সের তালিকা তৈরিতে সহায়তা করে, যা MediaInfo ইনস্ট্যান্স যেমন ভিডিও বা অডিও স্ট্রিম থেকে তৈরি করা যেতে পারে, যা রিসিভারে ক্রমানুসারে চালানো যেতে পারে। কন্টেন্ট আইটেমের এই কিউ সম্পাদনা, পুনর্বিন্যাস, আপডেট ইত্যাদি করা যেতে পারে।
রিসিভার SDK কিউ বজায় রাখে এবং কিউতে থাকা ক্রিয়াকলাপগুলিতে সাড়া দেয় যতক্ষণ না কিউতে কমপক্ষে একটি আইটেম বর্তমানে সক্রিয় থাকে (চালানো বা বিরতি দেওয়া)। প্রেরকরা সেশনে যোগ দিতে পারেন এবং কিউতে আইটেম যোগ করতে পারেন। রিসিভার কিউ আইটেমগুলির জন্য একটি সেশন বজায় রাখে যতক্ষণ না শেষ আইটেমটি প্লেব্যাক সম্পূর্ণ করে অথবা প্রেরক প্লেব্যাক বন্ধ করে সেশনটি বন্ধ করে, অথবা যতক্ষণ না একজন প্রেরক রিসিভারে একটি নতুন কিউ লোড করে। রিসিভার ডিফল্টভাবে সমাপ্ত কিউ সম্পর্কে কোনও তথ্য রাখে না। কিউতে থাকা শেষ আইটেমটি শেষ হয়ে গেলে, মিডিয়া সেশন শেষ হয়ে যায় এবং কিউ অদৃশ্য হয়ে যায়।
মিডিয়া কিউ আইটেম তৈরি এবং লোড করুন
কাস্ট ফ্রেমওয়ার্কে একটি মিডিয়া কিউ আইটেমকে MediaQueueItem ইনস্ট্যান্স হিসেবে উপস্থাপন করা হয়। যখন আপনি একটি মিডিয়া কিউ আইটেম তৈরি করেন, যদি আপনি অভিযোজিত কন্টেন্ট সহ মিডিয়া প্লেয়ার লাইব্রেরি ব্যবহার করেন, তাহলে আপনি প্রিলোড সময় সেট করতে পারেন যাতে প্লেয়ার কিউতে থাকা আইটেমটি প্লে করা শেষ হওয়ার আগেই মিডিয়া কিউ আইটেমটি বাফার করা শুরু করতে পারে। আইটেমের অটোপ্লে অ্যাট্রিবিউটকে true তে সেট করলে রিসিভার স্বয়ংক্রিয়ভাবে এটি চালাতে পারবে। উদাহরণস্বরূপ, আপনি আপনার মিডিয়া কিউ আইটেমটি তৈরি করতে একটি বিল্ডার প্যাটার্ন ব্যবহার করতে পারেন নিম্নরূপ:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
RemoteMediaClient এর উপযুক্ত queueLoad পদ্ধতি ব্যবহার করে কিউতে মিডিয়া কিউ আইটেমগুলির একটি অ্যারে লোড করুন।
মিডিয়া কিউ স্ট্যাটাস আপডেট পান
যখন রিসিভার একটি মিডিয়া কিউ আইটেম লোড করে, তখন এটি আইটেমটিকে একটি অনন্য আইডি বরাদ্দ করে যা সেশনের সময়কাল (এবং কিউয়ের জীবনকাল) ধরে থাকে। আপনার অ্যাপটি বর্তমানে কোন আইটেমটি লোড করা হয়েছে (এটি চালানো হচ্ছে না), লোড হচ্ছে, অথবা প্রিলোড করা হয়েছে তার পরিপ্রেক্ষিতে কিউয়ের অবস্থা জানতে পারে। MediaStatus ক্লাস এই স্ট্যাটাস তথ্য প্রদান করে:
-
getPreloadedItemId()পদ্ধতি - যদি পরবর্তী আইটেমটি প্রিলোড করা থাকে, তাহলে প্রিলোড করা আইটেম আইডি ফেরত দেয়। -
getLoadingItemId()পদ্ধতি - রিসিভারে বর্তমানে লোড হচ্ছে (কিন্তু কিউতে সক্রিয় নয়) এমন আইটেমের আইটেম আইডি প্রদান করে। -
getCurrentItemId()পদ্ধতি - মিডিয়া স্ট্যাটাস পরিবর্তনের সময় যে আইটেমটি কিউতে সক্রিয় ছিল (এটি সম্ভবত চলছে না) তার আইটেম আইডি ফেরত দেয়। -
getQueueItems()( অবচিত, পরিবর্তেMediaQueueব্যবহার করুন ) পদ্ধতি -MediaQueueItemউদাহরণের তালিকাটিকে একটি অপরিবর্তনীয় তালিকা হিসাবে ফেরত পাঠায়।
আপনার অ্যাপটি MediaQueue ক্লাস ব্যবহার করেও আইটেমের তালিকা পেতে পারে। ক্লাসটি মিডিয়া কিউয়ের একটি স্পার্স ডেটা মডেল। এটি আইটেম আইডির তালিকা কিউতে রাখে, যা স্বয়ংক্রিয়ভাবে রিসিভারের সাথে সিঙ্ক্রোনাইজ হয়। MediaQueue সমস্ত MediaQueueItem রাখে না কারণ কিউ খুব দীর্ঘ হলে এটি খুব বেশি মেমরি নেয়। পরিবর্তে, এটি চাহিদা অনুযায়ী আইটেমগুলি নিয়ে আসে এবং সম্প্রতি অ্যাক্সেস করা আইটেমগুলির একটি LruCache রাখে। মিডিয়া কিউ অ্যাক্সেস করার জন্য আপনি এই পদ্ধতিগুলি ব্যবহার করতে পারেন:
-
getItemIds()পদ্ধতি - ক্রমানুসারে সমস্ত আইটেম আইডির তালিকা প্রদান করে। -
getItemAtIndex()পদ্ধতি - একটি নির্দিষ্ট সূচীতে ক্যাশ করা আইটেমটি ফেরত পাঠায়। যদি আইটেমটি ক্যাশ করা না থাকে, তাহলেMediaQueueআইটেমটি আনার জন্যnullএবং schedule রিটার্ন করবে। আইটেমটি আনার পরে,MediaQueue.Callback#itemsUpdatedAtIndexes()কল করা হবে এবং একই আইডি দিয়ে আবারgetItemAtIndex()কল করলে আইটেমটি ফেরত আসবে। -
fetchMoteItemsRelativeToIndex()ব্যবহার করা হয় যখন ব্যবহারকারী কিউ UI কে উপরে বা নীচে স্ক্রোল করে, এবং আপনার অ্যাপ ক্লাউড থেকে আরও আইটেম আনতে চায়।
আপনার অ্যাপকে কিউয়ের অবস্থা এবং কিউতে থাকা আইটেমগুলি সম্পর্কে অবহিত করার জন্য অন্যান্য মিডিয়া স্ট্যাটাস পদ্ধতির সাথে এই পদ্ধতিগুলি একসাথে ব্যবহার করুন। রিসিভার থেকে মিডিয়া স্ট্যাটাস আপডেট ছাড়াও, আপনার অ্যাপ RemoteMediaClient.Callback এবং MediaQueue.Callback প্রয়োগ করে কিউতে পরিবর্তনগুলি শুনতে পারে।
এছাড়াও, কাস্ট এসডিকে কিউইংয়ের জন্য UI তৈরি করতে দুটি ইউটিলিটি ক্লাস প্রদান করে।
-
RecyclerViewএর ডেটা ব্যাক আপ করার জন্যMediaQueueRecyclerViewAdapter -
MediaQueueListAdapter,ListAdapterএর ডেটা ব্যাক আপ করার জন্য।
উদাহরণস্বরূপ, MediaQueueRecyclerViewAdapter ব্যবহার করে একটি RecyclerView তৈরি করতে:
class MyRecyclerViewAdapter(mediaQueue: MediaQueue?) : MediaQueueRecyclerViewAdapter<MyViewHolder?>(mediaQueue) { override fun onBindViewHolder(holder: MyViewHolder, position: Int) { val item = getItem(position) // Update the view using `item`. ... } } class MyViewHolder : RecyclerView.ViewHolder { // Implement your own ViewHolder. ... } fun someMethod() { val adapter = MyRecyclerViewAdapter( mCastSession.remoteMediaClient.getMediaQueue()) val recyclerView = activity.findViewById(R.id.my_recycler_view_id) as RecyclerView recyclerView.adapter = adapter }
public class MyRecyclerViewAdapter extends MediaQueueRecyclerViewAdapter<MyViewHolder> { public MyRecyclerViewAdapter(MediaQueue mediaQueue) { super(mediaQueue); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { MediaQueueItem item = getItem(position); // Update the view using `item`. ... } } public class MyViewHolder implements RecyclerView.ViewHolder { // Implement your own ViewHolder. ... } public void someMethod() { RecyclerView.Adapter adapter = new MyRecyclerViewAdapter( mCastSession.getRemoteMediaClient().getMediaQueue()); RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.my_recycler_view_id); recyclerView.setAdapter(adapter); }
সারি সম্পাদনা করুন
কিউতে থাকা আইটেমগুলিতে কাজ করার জন্য, RemoteMediaClient ক্লাসের কিউ পদ্ধতিগুলি ব্যবহার করুন। এর মাধ্যমে আপনি একটি নতুন কিউতে আইটেমগুলির একটি অ্যারে লোড করতে পারবেন, একটি বিদ্যমান কিউতে আইটেম সন্নিবেশ করতে পারবেন, কিউতে থাকা আইটেমগুলির বৈশিষ্ট্য আপডেট করতে পারবেন, একটি আইটেমকে কিউতে এগিয়ে বা পিছনে যেতে সাহায্য করতে পারবেন, কিউয়ের বৈশিষ্ট্যগুলি নিজেই সেট করতে পারবেন (উদাহরণস্বরূপ, পরবর্তী আইটেম নির্বাচন করে এমন repeatMode অ্যালগরিদম পরিবর্তন করতে পারবেন), কিউ থেকে আইটেমগুলি সরিয়ে ফেলতে পারবেন এবং কিউতে থাকা আইটেমগুলিকে পুনরায় সাজাতে পারবেন।