SuperAPI AI 工具集

media3-cast-integration

编程与开发

查看项目

更新于 10-15 16:49

技能介绍

用途:在 Android 应用中用 Jetpack Media3 实现 Google Cast 支持,替代已进入维护模式的旧版 Google Cast SDK。新项目必须用 Media3 Cast,无需旧 SDK。前提:Jetpack Media3 版本须 ≥ 1.9.0,低版本不支持 Cast。

主要能力与步骤:

  1. 依赖:在应用级构建文件声明 media3-cast 1.9.0 以上,例如 implementation("androidx.media3:media3-cast:1.11.1");同时确保 media3-exoplayer、media3-session、media3-ui-compose 存在,若用旧版 View 再加 media3-ui;所有 Media3 依赖版本保持一致。未集成 Cast 的应用要确认没有旧版 libs.play.services.cast.framework;从旧 SDK 迁移时先加 Media3 Cast 依赖,暂不动旧依赖。
  2. 清单:在 application 标签内声明 Cast options provider,默认用 DefaultCastOptionsProvider,仅在明确要求时自定义;确保有 INTERNET 权限,不加多余权限。迁移时不要删除已有自定义 provider 文件或清单项。
  3. 播放器与服务:在 MediaSessionService(或 MediaLibraryService)的 onCreate() 中初始化 ExoPlayer 和 CastPlayer,默认用 CastPlayer,仅在明确要求时用 RemoteCastPlayer;CastPlayer 实例直接传给 MediaSession.Builder,替换旧转发播放器包装。RemoteCastPlayer 需用 localPlayer 初始化 MediaSession 并设置 SessionAvailabilityListener,在 Cast 会话可用/不可用时转移播放状态(含 PlayerTransferState 示例逻辑)。
  4. UI:Compose 用 androidx.media3.cast 的 MediaRouteButton 可组合项,不要用 AndroidView;设备信息变化时用 key(deviceInfo) 强制重组同步 UI。View 体系用 MediaRouteButtonFactory 替换 CastButtonFactory,并在 onDeviceInfoChanged 时重新绑定 PlayerView.player 以避免黑屏或冻结。
  5. 清理:仅在用户明确要求时删除旧 GMS Cast SDK、MediaRouter、自定义 OptionsProvider、MediaTransferReceiver 等旧组件与依赖,切勿擅自清理。

限制:Cast 需 Media3 ≥ 1.9.0;RemoteCastPlayer 与自定义 OptionsProvider 仅按明确需求使用;迁移期间不要过早删除旧文件以免编译错误。