מסגרת ההעברה (cast) כוללת מחלקות בתור התומכות ביצירת רשימות
מתוך MediaQueueItem
מכונות, שיכול להיות מבוססות על MediaInfo
מופעים כמו וידאו או אודיו
משודרת ברצף, כדי שתופעל ברצף במקלט. התור הזה של פריטי התוכן
ניתן לערוך, לשנות את הסדר, לעדכן וכן הלאה.
ה-SDK של המקבל שומר על התור ומגיב לפעולות כל עוד התור כולל לפחות פריט אחד פעיל (מופעל או מושהה). השולחים יוכלו להצטרף לסשן ולהוסיף פריטים לתור. המקבל שומר הפעלה של פריטים בתור עד שהפריט האחרון מסיים את ההפעלה, או השולח עוצר את ההפעלה ומסיים את הסשן, או עד שהשולח טוען תור חדש במקלט. המקבל לא שומר על תורים שנסגרו כברירת מחדל. לאחר הפריט האחרון בתור מסתיים, סשן המדיה מסתיים והתור נעלם.
יצירה וטעינה של פריטים בתור המדיה
פריט בתור מדיה מיוצג במסגרת Cast בתור
MediaQueueItem
מכונה.
כשיוצרים פריט בתור מדיה, אם משתמשים ב-Media Player
לספרייה עם תוכן מותאם, אפשר להגדיר
זמן הטעינה מראש כדי שהנגן יוכל להתחיל בתהליך אגירת הנתונים של הפריט בתור המדיה לפני
הפריט שלפניו בתור מסיים להשמיע. הגדרת ההפעלה האוטומטית של הפריט
המאפיין כ-true מאפשר למקבל להפעיל אותו באופן אוטומטי. לדוגמה,
אפשר להשתמש בתבנית builder כדי ליצור את הפריט בתור המדיה באופן הבא:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
טוענים מערך של פריטים בתור המדיה בתור באמצעות
queueLoad
ל-RemoteMediaClient
.
קבלת עדכונים לגבי הסטטוס של תור המדיה
כשהמקבל טוען פריט בתור מדיה, הוא מקצה מזהה ייחודי לפריט
שנמשכת כל זמן ההפעלה (וכל משך החיים של התור). שלך
האפליקציה יכולה לקבל מידע על הסטטוס של התור מבחינת הפריט שנטען כרגע
(ייתכן שהוא לא פועל), בטעינה או בטעינה מראש.
MediaStatus
הכיתה מספקת את פרטי הסטטוס הבאים:
getPreloadedItemId()
method - אם הפריט הבא נטען מראש, מחזירה את מזהה הפריט שנטען מראש.getLoadingItemId()
method - מחזירה את מזהה הפריט של הפריט שנטען כרגע (אבל לא פעיל בתור) במקבל.getCurrentItemId()
method - מחזירה את מזהה הפריט של הפריט שהיה פעיל בתור ( לא פועל) כאשר שינוי סטטוס המדיה התרחש.getQueueItems()
(הוצא משימוש, השתמש במקום זאת ב-MediaQueue
) – מחזירה את הרשימה שלMediaQueueItem
מופעים כרשימה שלא ניתן לשנות.
האפליקציה יכולה גם לקבל את רשימת הפריטים באמצעות
MediaQueue
בכיתה. המחלקה היא מודל נתונים דל של תור המדיה. היא שומרת את הרשימה של
מזהי פריטים בתור, שמסתנכרנים באופן אוטומטי עם המקבל.
MediaQueue
לא שומר את כל
MediaQueueItem
כי יידרש יותר מדי זיכרון כשהתור ארוך מאוד. במקום זאת,
מאחזר את הפריטים לפי דרישה ושומר על LruCache
פריטים שנכנסתם אליהם לאחרונה. ניתן להשתמש בשיטות הבאות כדי לגשת לתור המדיה:
getItemIds()
method - מחזירה את הרשימה של כל מזהי הפריטים לפי הסדר.getItemAtIndex()
method - מחזירה את הפריט שנשמר במטמון באינדקס נתון. אם הפריט לא נשמר במטמון, הפונקציהMediaQueue
תחזיר את הערךnull
ותתזמן אחזור של הפריט. כשהפריט מאוחזר,MediaQueue.Callback#itemsUpdatedAtIndexes()
תתבצע שיחה, ואם נתקשר שוב אלgetItemAtIndex()
עם אותו מזהה, להחזיר את הפריט.- המערכת משתמשת בערך
fetchMoteItemsRelativeToIndex()
כשהמשתמש גולל בחלק העליון או התחתון של ממשק המשתמש בתור 'הבאים בתור'. והאפליקציה שלכם רוצה לאחזר פריטים נוספים מהענן.
יש להשתמש בשיטות האלה בשילוב עם שיטות אחרות של סטטוס מדיה כדי לעדכן את
על הסטטוס של 'הבאים בתור' והפריטים בתור. נוסף ל-
עדכוני סטטוס מדיה מהמקלט, האפליקציה יכולה להאזין לשינויים
מוסיפים את 'הבאים בתור' ל'הבאים בתור'
RemoteMediaClient.Callback
וגם
MediaQueue.Callback
כמו כן, ב-Cast SDK יש שני מחלקות של כלים ליצירת ממשק משתמש בתור.
MediaQueueRecyclerViewAdapter
, לגיבוי הנתונים שלRecyclerView
MediaQueueListAdapter
, לגיבוי הנתונים שלListAdapter
לדוגמה, כדי ליצור RecyclerView
באמצעות MediaQueueRecyclerViewAdapter
:
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
שבוחר את הפריט הבא),
להסיר פריטים מהתור ולשנות את הסדר של הפריטים בתור.