“意图加入”是 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)
:
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 设置
如需利用 intent 加入功能,必须在 Google Cast Developer Console 中添加应用 URI 和软件包名称。
此外,还必须列出并发布您的接收器,以便 Intent 加入功能才能正常运行。
如需列出您的应用,请将列表选项切换为“是”,然后为您的应用提供标题、说明和 512x512 的图片。
设置完成后,您可以使用遥控器通知 (RCN) 测试实现,如下所示:
- 在 Android 手机上安装 Google Home 应用,并在手机上连接到 Wi-Fi。
- 支持 Cast 的设备在设置 Google Home 设备时使用的是同一个网络。
- 使用命令和控制 (CaC) 工具、另一台 Android 或 iOS 设备或通过语音向 Google Home 设备发起 Cast 会话,然后检查是否已启动 Web 接收器应用。
- 等待几秒钟以获取手机上的 RCN,然后点按该通知以触发 intent。只要应用使用加入会话所需的数据注册了该 intent,该 intent 就可以广播给该应用。
系统将触发 SessionManagerListener.onSessionStarted(T, String)
并加入会话。
验证
如果您的应用成功加入会话,则调用 SessionManagerListener.onSessionStarted(T, String)
。否则,系统会调用 SessionManagerListener.onSessionStartFailed(T, int)
。假设应用已正确处理这些事件(例如,启动展开的控制器或迷你控制器),您无需执行任何其他操作。