「参加インテント」は、他のアプリまたは音声によって開始されたキャスト セッションに送信者アプリが「参加」できるようにする、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)
を呼び出します。
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) } ... }
@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)を使用して実装をテストできます。
- Android スマートフォンに Google Home アプリをインストールし、スマートフォンで Wi-Fi に接続します。
- Cast 対応デバイスが同じネットワーク内で Google Home デバイスをセットアップする。
- コマンド アンド コントロール(CaC)ツール、別の Android デバイスまたは iOS デバイスを使用するか、音声によってウェブ レシーバー アプリが起動されるかどうかを使用して、Google Home デバイスでキャスト セッションを開始します。
- スマートフォンで RCN を受信するまで数秒待ってから、通知をタップしてインテントをトリガーします。セッションへの参加に必要なデータにインテントを登録するアプリには、インテントをブロードキャストする必要があります。
SessionManagerListener.onSessionStarted(T, String)
がトリガーされ、セッションに参加します。
検証
アプリがセッションに正常に参加すると、SessionManagerListener.onSessionStarted(T, String)
が呼び出されます。それ以外の場合は、SessionManagerListener.onSessionStartFailed(T, int)
が呼び出されます。アプリでこれらのイベントがすでに適切に処理されていれば(拡張コントローラやミニ コントローラの起動など)、これ以上の対応は必要ありません。