キュー

Cast フレームワークには、リストの作成をサポートするキューイング クラスが用意されています。 /MediaQueueItem インスタンス。動画やオーディオなどの MediaInfo インスタンスから構築できます。 受信機で順番に再生します。このコンテンツ アイテムのキューは 編集、並べ替え、更新などを行うことができます。

Receiver SDK はキューを維持し、オブジェクトのオペレーションに応答します。 そのキューには現在アクティブなアイテム(再生中または 一時停止)。送信者はセッションに参加して、キューにアイテムを追加できます。受信者 最後のアイテムの再生が完了するまで、またはキュー アイテムのセッションを維持します。 送信側が再生を停止してセッションを終了するか、 新しいキューをレシーバーに読み込みます。受信側では、 終了したキューについての情報がデフォルトです。キューの最後のアイテムが メディア セッションが終了し、キューが消えます。

メディアキュー アイテムを作成して読み込む

メディアキュー アイテムは、キャスト フレームワークで MediaQueueItem 作成します。 メディア プレーヤー ライブラリでは、アダプティブ コンテンツ プレーヤーが事前にメディアキュー アイテムのバッファリングを開始できるように、プリロード時間 キュー内の前のアイテムの再生が終了します。アイテムの自動再生を設定する 属性を true に設定すると、受信側で自動的に再生できます。たとえば 次のように、ビルダー パターンを使用してメディアキュー アイテムを作成できます。

Kotlin
で確認できます。
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo)
    .setAutoplay(true)
    .setPreloadTime(20.0)
    .build()
Java
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo)
  .setAutoplay(true)
  .setPreloadTime(20)
  .build();

適切な queueLoad RemoteMediaClient のメソッド。

メディアキューのステータス更新を受信する

レシーバーはメディアキュー アイテムを読み込むと、アイテムに一意の ID を割り当てます。 これは、セッション(およびキューの存続期間)の間持続します。お客様の アプリは、現在読み込まれているアイテムに関するキューのステータスを学習できます。 (再生していない可能性があります)、読み込み中、またはプリロードされています。「 MediaStatus クラスは、次のステータス情報を提供します。

  • getPreloadedItemId() method - 次のアイテムがプリロードされている場合、プリロードされたアイテム ID を返します。
  • getLoadingItemId() method - 現在読み込まれているアイテムのアイテム ID を返します(ただし、 (キューの中でアクティブ)が受信されます。
  • getCurrentItemId() method - キューでアクティブだったアイテムのアイテム ID を返します( が再生されていない可能性があるなど)に表示されます。
  • getQueueItems() (非推奨。代わりに MediaQueue を使用してください) MediaQueueItem インスタンスを変更不可のリストとして指定します。

アプリは MediaQueue クラスです。このクラスは、メディアキューのスパース データモデルです。既存のルールに基づき、 キュー内のアイテム ID。レシーバと自動的に同期されます。 MediaQueue では、すべての MediaQueueItem キューが非常に長い場合、大量のメモリが必要になります。代わりに、 は、オンデマンドでアイテムを取得し、LruCache を 最近アクセスしたアイテムが表示されます。メディアキューにアクセスするには、次のメソッドを使用します。

  • getItemIds() method - すべての商品アイテム ID のリストを順番に返します。
  • getItemAtIndex() method - 指定されたインデックスにキャッシュされたアイテムを返します。アイテムがキャッシュされていない場合 MediaQueuenull を返し、アイテムを取得するスケジュールを設定します。アイテムが 取得されていれば MediaQueue.Callback#itemsUpdatedAtIndexes() 呼び出され、同じ ID で再度 getItemAtIndex() を呼び出すと、 返品する。
  • fetchMoteItemsRelativeToIndex() は、ユーザーがキュー UI を上または下にスクロールしたときに使用されます。 アプリがクラウドからより多くのアイテムを取得する必要がある場合。

これらの方法は、他のメディア ステータス メソッドと併用して、 キュー内のアイテムのステータスに関する情報がアプリに返されます。これらに加えて、 更新された場合、アプリはメディア ステータスの変更をリッスンできます。 実装するために RemoteMediaClient.Callback および MediaQueue.Callback

また、Cast SDK には、キューイング用の UI を作成するためのユーティリティ クラスが 2 つあります。

たとえば、MediaQueueRecyclerViewAdapter を使用して RecyclerView を作成するには、次のようにします。

Kotlin
で確認できます。
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
}
Java
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 アルゴリズムを変更します)。 キューからアイテムを削除し、キュー内のアイテムを並べ替える。