加入意圖

「意圖加入」是 Android 傳送者的新功能,可讓傳送者「加入」其他應用程式或語音啟動的投放工作階段。將傳送者應用程式設為由 Cast SDK 建立的意圖啟動。

舉例來說,當使用語音啟動投放工作階段時,Cast SDK 會建立通知,讓使用者能控制相同網路中所有 Android 手機的播放作業。使用者輕觸通知時,Cast SDK 會建立啟動應用程式以加入投放工作階段的意圖。

請參閱 CastVideos-Android 範例,瞭解要加入的意圖實作。

使用 Android 寄件者

如要啟用此功能,請在應用程式中執行下列步驟:

請確認應用程式已使用 Android Sender SDK 11.4.0 以上版本。在 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 開發人員控制台設定

如要使用「意圖加入」功能,您必須在 Google Cast 開發人員控制台中新增應用程式 URI 和套件名稱。

您的接收器也必須列出並發布,才能讓意圖加入功能正常運作。

如要列出應用程式,請將商店資訊選項切換為「是」,並針對應用程式提供標題、說明和 512x512 的圖片。

設定完成後,您可以使用遠端控制通知 (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)。假設應用程式已妥善處理這些事件 (例如啟動展開的控制器或迷你控制器),則不必採取其他行動。