参加の意向

「参加インテント」は、他のアプリまたは音声によって開始されたキャスト セッションに送信者アプリが「参加」できるようにする、Android Sender の新機能です。Cast SDK によって作成されたインテントによって起動されるセンダーアプリをセットアップした。

たとえば、音声を使用してキャスト セッションを開始する場合、Cast SDK は、同じネットワーク上にあるすべての Android スマートフォンでユーザーが再生を操作できるようにする通知を作成します。通知をタップすると、Cast SDK は、アプリを起動してキャスト セッションに参加させるインテントを作成します。

インテントの結合機能の実装については、CastVideos-Android サンプルをご覧ください。

Android 送信者の使用

この機能を有効にするには、アプリで次の手順を行います。

アプリですでに 11.4.0 以降の Android Sender SDK バージョンを使用していることを確認します。build.gradle 内:

dependencies {
    api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}

インテントを処理するアクティビティに新しいインテント フィルタを追加します。このインテントは、アプリを起動してキャスト セッションに参加するために、リモコン通知(RCN)によって使用されます。SessionManagerListener がホストされ、onSessionStarted() または onSessionStartFailed() が呼び出されるアクティビティを使用することをおすすめします。新しいインテント フィルタが Android システム全体で一意であることを確認します。そのためには、次のように <data> タグを使用することをおすすめします。

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_app_scheme" android:host="your_app_host"
        android:path="your_app_path"/>
</intent-filter>

<data> タグの例:

<data android:scheme="https" android:host="example.com"
      android:path="/cast/join"/>

新しいインテント フィルタを定義したアクティビティで、onResume()SessionManager.startSession(Intent) を呼び出します。

Kotlin
override fun onResume() {
    ...
    val intent = intent
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    val intentToJoinUri = Uri.parse("https://example.com/cast/join")
    if (intent.data != null && intent.data == intentToJoinUri) {
        mCastContext.sessionManager.startSession(intent)
    }
    ...
}
Java
@Override
protected void onResume() {
    ...
    Intent intent = getIntent();
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
    if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
        mCastContext.getSessionManager().startSession(intent);
    }
    ...
}

Google Cast Developer Console のセットアップ

参加インテント機能を利用するには、Google Cast デベロッパー コンソールでアプリの URI とパッケージ名を追加する必要があります。

Intent to Join を正常に機能させるには、レシーバーもリストして公開する必要があります。

アプリを掲載するには、掲載情報のオプションを [はい] に切り替えて、アプリのタイトル、説明、512x512 のグラフィックを指定します。

設定後、次のように Remote Control Notifications(RCN)を使用して実装をテストできます。

  1. Android スマートフォンに Google Home アプリをインストールし、スマートフォンで Wi-Fi に接続します。
  2. Cast 対応デバイスが同じネットワーク内で Google Home デバイスをセットアップする。
  3. コマンド アンド コントロール(CaC)ツール、別の Android デバイスまたは iOS デバイスを使用するか、音声によってウェブ レシーバー アプリが起動されるかどうかを使用して、Google Home デバイスでキャスト セッションを開始します。
  4. スマートフォンで RCN を受信するまで数秒待ってから、通知をタップしてインテントをトリガーします。セッションへの参加に必要なデータにインテントを登録するアプリには、インテントをブロードキャストする必要があります。

SessionManagerListener.onSessionStarted(T, String) がトリガーされ、セッションに参加します。

検証

アプリがセッションに正常に参加すると、SessionManagerListener.onSessionStarted(T, String) が呼び出されます。それ以外の場合は、SessionManagerListener.onSessionStartFailed(T, int) が呼び出されます。アプリでこれらのイベントがすでに適切に処理されていれば(拡張コントローラやミニ コントローラの起動など)、これ以上の対応は必要ありません。