Cast フレームワークには、リストの作成をサポートするキューイング クラスが用意されています。
/MediaQueueItem
インスタンス。動画やオーディオなどの MediaInfo
インスタンスから構築できます。
受信機で順番に再生します。このコンテンツ アイテムのキューは
編集、並べ替え、更新などを行うことができます。
Receiver 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();
適切な
queueLoad
RemoteMediaClient
のメソッド。
メディア キューのステータスの最新情報を受け取る
レシーバーはメディアキュー アイテムを読み込むと、アイテムに一意の ID を割り当てます。
これは、セッション(およびキューの存続期間)の間持続します。アプリは、現在読み込まれているアイテム(再生されていない場合もあります)、読み込み中、プリロード済みのアイテムの観点からキューのステータスを把握できます。「
MediaStatus
クラスは、次のステータス情報を提供します。
getPreloadedItemId()
method - 次のアイテムがプリロードされている場合、プリロードされたアイテム ID を返します。getLoadingItemId()
method - 現在読み込まれているアイテムのアイテム ID を返します(ただし、 (キューの中でアクティブ)が受信されます。getCurrentItemId()
メソッド - メディアのステータスが変更された時点でキューでアクティブだったアイテムのアイテム ID を返します(再生されていない可能性があります)。getQueueItems()
(非推奨。代わりにMediaQueue
を使用してください)MediaQueueItem
インスタンスを変更不可のリストとして指定します。
アプリは
MediaQueue
クラスです。このクラスは、メディアキューのスパース データモデルです。既存のルールに基づき、
キュー内のアイテム ID。レシーバと自動的に同期されます。
キューが非常に長い場合、メモリを使いすぎるため、MediaQueue
はすべての MediaQueueItem
を保持しません。代わりに、
は、オンデマンドでアイテムを取得し、LruCache
を
最近アクセスしたアイテムが表示されます。メディアキューにアクセスするには、次のメソッドを使用します。
getItemIds()
method - すべての商品アイテム ID のリストを順番に返します。getItemAtIndex()
method - 指定されたインデックスにキャッシュされたアイテムを返します。アイテムがキャッシュされていない場合MediaQueue
はnull
を返し、アイテムを取得するスケジュールを設定します。アイテムが 取得されていればMediaQueue.Callback#itemsUpdatedAtIndexes()
呼び出され、同じ ID で再度getItemAtIndex()
を呼び出すと、 返品する。fetchMoteItemsRelativeToIndex()
は、ユーザーがキュー UI を上または下にスクロールしたときに使用されます。 アプリがクラウドからより多くのアイテムを取得する必要がある場合。
これらの方法は、他のメディア ステータス メソッドと併用して、
キュー内のアイテムのステータスに関する情報がアプリに返されます。これらに加えて、
更新された場合、アプリはメディア ステータスの変更をリッスンできます。
実装するために
RemoteMediaClient.Callback
および
MediaQueue.Callback
。
また、Cast SDK には、キューイング用の UI を作成するためのユーティリティ クラスが 2 つあります。
MediaQueueRecyclerViewAdapter
データの裏付けをRecyclerView
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
アルゴリズムを変更するなど)、キューからアイテムを削除する、キュー内のアイテムを並べ替えることができます。