কাস্ট ফ্রেমওয়ার্ক সারিবদ্ধ ক্লাসগুলি সরবরাহ করে যা MediaQueueItem
দৃষ্টান্তগুলির তালিকা তৈরি করতে সমর্থন করে, যা রিসিভারে ক্রমানুসারে চালানোর জন্য MediaInfo
উদাহরণ যেমন ভিডিও বা অডিও স্ট্রিম থেকে তৈরি করা যেতে পারে। বিষয়বস্তুর আইটেমগুলির এই সারি সম্পাদনা, পুনর্বিন্যাস, আপডেট করা এবং আরও অনেক কিছু করা যেতে পারে৷
রিসিভার SDK সারির রক্ষণাবেক্ষণ করে এবং যতক্ষণ পর্যন্ত সারিতে অন্তত একটি আইটেম সক্রিয় থাকে (বাজানো বা বিরতি দেওয়া হয়) ততক্ষণ পর্যন্ত সারিতে ক্রিয়াকলাপগুলিতে প্রতিক্রিয়া জানায়৷ প্রেরকরা সেশনে যোগ দিতে পারেন এবং সারিতে আইটেম যোগ করতে পারেন। শেষ আইটেমটি প্লেব্যাক সম্পূর্ণ না হওয়া পর্যন্ত বা প্রেরক প্লেব্যাক বন্ধ করে সেশনটি বন্ধ না করা পর্যন্ত বা প্রেরক রিসিভারে একটি নতুন সারি লোড না করা পর্যন্ত রিসিভার সারি আইটেমগুলির জন্য একটি সেশন বজায় রাখে। রিসিভার ডিফল্টরূপে সমাপ্ত সারি সম্পর্কে কোনো তথ্য বজায় রাখে না। একবার সারির শেষ আইটেমটি শেষ হয়ে গেলে, মিডিয়া সেশন শেষ হয়ে যায় এবং সারিটি অদৃশ্য হয়ে যায়।
মিডিয়া সারি আইটেম তৈরি করুন এবং লোড করুন
একটি মিডিয়া সারি আইটেম একটি MediaQueueItem
উদাহরণ হিসাবে কাস্ট ফ্রেমওয়ার্কে প্রতিনিধিত্ব করা হয়৷ আপনি যখন একটি মিডিয়া সারি আইটেম তৈরি করেন, আপনি যদি অভিযোজিত বিষয়বস্তু সহ মিডিয়া প্লেয়ার লাইব্রেরি ব্যবহার করেন, আপনি প্রিলোডের সময় সেট করতে পারেন যাতে প্লেয়ারটি সারিতে থাকা আইটেমটির সামনের আইটেমটি চালানোর আগে বাফার করা শুরু করতে পারে৷ আইটেমের অটোপ্লে অ্যাট্রিবিউটটিকে সত্যে সেট করা রিসিভারকে স্বয়ংক্রিয়ভাবে এটি চালানোর অনুমতি দেয়। উদাহরণস্বরূপ, আপনি নিম্নরূপ আপনার মিডিয়া সারি আইটেম তৈরি করতে একটি নির্মাতা প্যাটার্ন ব্যবহার করতে পারেন:
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
এবং সময়সূচী প্রদান করবে। আইটেমটি আনা হলে,MediaQueue.Callback#itemsUpdatedAtIndexes()
কল করা হবে এবং একই আইডি দিয়ে আবারgetItemAtIndex()
কল করলে আইটেমটি ফিরে আসবে। -
fetchMoteItemsRelativeToIndex()
ব্যবহার করা হয় যখন ব্যবহারকারী সারি UI কে উপরে বা নীচে স্ক্রোল করে এবং আপনার অ্যাপ ক্লাউড থেকে আরও আইটেম আনতে চায়।
সারির স্থিতি এবং সারিতে থাকা আইটেমগুলি সম্পর্কে আপনার অ্যাপকে জানাতে অন্যান্য মিডিয়া স্ট্যাটাস পদ্ধতিগুলির সাথে এই পদ্ধতিগুলি একসাথে ব্যবহার করুন৷ রিসিভার থেকে মিডিয়া স্ট্যাটাস আপডেট ছাড়াও, আপনার অ্যাপ RemoteMediaClient.Callback
এবং MediaQueue.Callback
প্রয়োগ করে সারিতে পরিবর্তনের জন্য শুনতে পারে।
এছাড়াও, কাস্ট SDK সারিবদ্ধ করার জন্য 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
অ্যালগরিদম পরিবর্তন করুন যা পরবর্তী আইটেমটি নির্বাচন করে), সারি থেকে আইটেমগুলি সরান এবং সারিতে থাকা আইটেমগুলিকে পুনরায় সাজান৷