加入意图

“意图加入”是 Android 发送者的一项新功能,可让发送者应用“加入”由其他应用或语音发起的 Cast 会话。您将发送器应用设置为由 Cast SDK 创建的 intent 启动。

例如,使用语音启动 Cast 会话时,Cast SDK 会创建一条通知,允许用户控制同一网络上的所有 Android 手机上的播放。当用户点按该通知时,Cast SDK 会创建 intent 来启动您的应用,以便加入 Cast 会话。

如需了解 intent to Join 的有效实现,请参阅 CastVideos-Android 示例

使用 Android 发送者

如需启用此功能,请在您的应用中执行以下步骤:

确保您的应用已在使用高于 11.4.0 的 Android Sender SDK 版本。在 build.gradle 中:

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

向您要处理 intent 的 activity 添加新的 intent 过滤器。远程控制通知 (RCN) 将使用 intent 启动您的应用并加入 Cast 会话。我们建议您使用托管 SessionManagerListener 的 activity,系统将调用 onSessionStarted()onSessionStartFailed()。确保新的 intent 过滤器在整个 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"/>

在您定义新 intent 过滤器的 activity 中,在 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 设置

如需利用 intent 加入功能,必须在 Google Cast Developer Console 中添加应用 URI 和软件包名称。

此外,还必须列出并发布您的接收器,以便 Intent 加入功能才能正常运行。

如需列出您的应用,请将列表选项切换为“是”,然后为您的应用提供标题、说明和 512x512 的图片。

设置完成后,您可以使用遥控器通知 (RCN) 测试实现,如下所示:

  1. 在 Android 手机上安装 Google Home 应用,并在手机上连接到 Wi-Fi。
  2. 支持 Cast 的设备在设置 Google Home 设备时使用的是同一个网络。
  3. 使用命令和控制 (CaC) 工具、另一台 Android 或 iOS 设备或通过语音向 Google Home 设备发起 Cast 会话,然后检查是否已启动 Web 接收器应用。
  4. 等待几秒钟以获取手机上的 RCN,然后点按该通知以触发 intent。只要应用使用加入会话所需的数据注册了该 intent,该 intent 就可以广播给该应用。

系统将触发 SessionManagerListener.onSessionStarted(T, String) 并加入会话。

验证

如果您的应用成功加入会话,则调用 SessionManagerListener.onSessionStarted(T, String)。否则,系统会调用 SessionManagerListener.onSessionStartFailed(T, int)。假设应用已正确处理这些事件(例如,启动展开的控制器或迷你控制器),您无需执行任何其他操作。