Mediarouter

利用通用界面实现在远程接收端设备上显示和播放媒体内容。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 3 月 20 日 1.7.0 - - -

声明依赖项

如需添加 MediaRouter 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.mediarouter:mediarouter:1.7.0"
}

Kotlin

dependencies {
    implementation("androidx.mediarouter:mediarouter:1.7.0")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.7

版本 1.7.0

2024 年 3 月 20 日

发布了 androidx.mediarouter:mediarouter:1.7.0androidx.mediarouter:mediarouter-testing:1.7.0。版本 1.7.0 包含这些提交内容

API 变更

  • isSystemRoute() 添加到 MediaRouteDescriptorRouteInfo,如果相应的路由是系统管理的路由,则返回 true,这意味着系统是路由提供程序,应用负责将媒体样本馈送给系统以进行渲染 (I949e4)。蓝牙耳机、有线耳机和内置扬声器是系统路由的示例。
  • 废弃了 MediaRouter.removeRemoteControlClient。您应调用 setMediaSessionCompat(MediaSessionCompat),而不是调用 addRemoteControlClient(Object),这样就无需调用 removeRemoteControlClient(Object)。(I8fc5e)。
  • 使 MediaRouteButton 扩展 AppCompatImageView。(Ib455e)。
  • 添加 DEVICE_TYPE_SMARTPHONE,表示媒体路由是智能手机。(I39837)。
  • 改进了从 MediaRouter2 到 AndroidX MediaRouter 的设备类型映射,以描述系统路由(例如蓝牙、HDMI、有线)。(Iccffa)

bug 修复

  • 为可能导致一些孤立崩溃的路线按钮添加了缺少的图标解决方案。(cddba9b/261878418)。
  • 修复了导致 isSystemRoute 针对通过 android.media.MediaRouter#addUserRoute() 添加的用户路线返回 true 的 bug (a27f6b)。

新功能

  • 将 minSdk 提升到 19。(e8c4463)

版本 1.7.0-rc01

2024 年 3 月 6 日

发布了 androidx.mediarouter:mediarouter:1.7.0-rc01androidx.mediarouter:mediarouter-testing:1.7.0-rc01。版本 1.7.0-rc01 包含这些提交内容

版本 1.7.0-beta01

2024 年 2 月 21 日

发布了 androidx.mediarouter:mediarouter:1.7.0-beta01androidx.mediarouter:mediarouter-testing:1.7.0-beta01版本 1.7.0-beta01 中包含这些提交内容

版本 1.7.0-alpha02

2024 年 2 月 7 日

发布了 androidx.mediarouter:mediarouter:1.7.0-alpha02androidx.mediarouter:mediarouter-testing:1.7.0-alpha02版本 1.7.0-alpha02 中包含这些提交内容

新功能

  • 将 minSdk 提升到 19。(e8c4463)

API 变更

  • 改进了从 MediaRouter2 到 AndroidX MediaRouter 的设备类型映射,以描述系统路由(例如蓝牙、HDMI、有线)。(Iccffa)

bug 修复

  • 修复了导致 isSystemRoute 针对通过 android.media.MediaRouter#addUserRoute() 添加的用户路线返回 true 的 bug (a27f6b)。

版本 1.7.0-alpha01

2023 年 11 月 15 日

发布了 androidx.mediarouter:mediarouter:1.7.0-alpha01androidx.mediarouter:mediarouter-testing:1.7.0-alpha01版本 1.7.0-alpha01 中包含这些提交内容

API 变更

  • isSystemRoute() 添加到 MediaRouteDescriptorRouteInfo,如果相应的路由是系统管理的路由,则返回 true,这意味着系统是路由提供程序,应用负责将媒体样本馈送给系统以进行渲染 (I949e4)。蓝牙耳机、有线耳机和内置扬声器是系统路由的示例。
  • 废弃了 MediaRouter.removeRemoteControlClient。您应调用 setMediaSessionCompat(MediaSessionCompat),而不是 addRemoteControlClient(Object),这样就无需调用 removeRemoteControlClient(Object)。(I8fc5e)。
  • 使 MediaRouteButton 扩展 AppCompatImageView。(Ib455e)。
  • 添加 DEVICE_TYPE_SMARTPHONE,表示媒体路由是智能手机。(I39837)。

bug 修复

  • 为可能导致一些孤例崩溃的路线按钮添加了缺少的图标解决方案。(cddba9b/261878418)。

版本 1.6

版本 1.6.0

2023 年 9 月 20 日

发布了 androidx.mediarouter:mediarouter:1.6.0androidx.mediarouter:mediarouter-testing:1.6.0版本 1.6.0 中包含这些提交内容

自 1.4.0 以来的主要功能

  • 输出切换器的路由列表偏好设置
  • 向 AndroidX MediaRouter 添加了路由列表偏好设置支持。
  • 为 MediaRouteDescriptor 添加了可见性支持。
  • 改进了 MediaRouteButton,以提供更好的用户体验 ((I9dbcb)[https://android-review.googlesource.com/#/q/I9dbcb8d9e5ee4902d48f1bfb4133e04781c6ae35))。包括:
    • 向用户添加提示,让其检查所搜索的设备是否连接到同一 Wi-Fi 网络。
    • 添加一个包含错误消息的结束状态,以便在预定义的时间段结束时显示。
  • 添加了在屏幕关闭时自动关闭 MediaRouter 对话框的功能。

版本 1.6.0-rc01

2023 年 8 月 23 日

发布了 androidx.mediarouter:mediarouter:1.6.0-rc01androidx.mediarouter:mediarouter-testing:1.6.0-rc01版本 1.6.0-rc01 中包含这些提交内容

新功能

  • 添加了在屏幕关闭时自动关闭 MediaRouter 对话框的功能。Ib25ee

bug 修复

  • MediaRouter 日志记录标记更改为 AxMediaRouter,以与平台 MediaRouter 区分开来。(Ib619f)。

版本 1.6.0-beta01

2023 年 8 月 9 日

发布了 androidx.mediarouter:mediarouter:1.6.0-beta01androidx.mediarouter:mediarouter-testing:1.6.0-beta01版本 1.6.0-beta01 中包含这些提交内容

API 变更

bug 修复

  • 修复了 MediaRouteChooserDialog 中的翻译。(d39a7f)

版本 1.6.0-alpha05

2023 年 6 月 21 日

发布了 androidx.mediarouter:mediarouter:1.6.0-alpha05androidx.mediarouter:mediarouter-testing:1.6.0-alpha05版本 1.6.0-alpha05 中包含这些提交内容。

新功能

  • 改进了 MediaRouteChooserDialog 界面,通过向用户提供书面指导来处理未发现设备的情况 (I0cad9I3d445)。

版本 1.6.0-alpha04

2023 年 6 月 7 日

发布了 androidx.mediarouter:mediarouter:1.6.0-alpha04androidx.mediarouter:mediarouter-testing:1.6.0-alpha04。此版本是在内部分支中开发的。

新功能

  • 改进了 MediaRouteButton,以提供更好的用户体验 (I9dbcb)。包括:
    • 向用户添加提示,让其检查所搜索的设备是否连接到同一 Wi-Fi 网络。
    • 添加一个包含错误消息的结束状态,以便在预定义的时间段结束时显示。

API 变更

  • 从平台引入新的 MediaRouteDescriptor 设备类型。(I75ba6)。

bug 修复

  • 修复了非动态路由控制器 (I730ec) 上的音量调整问题。
  • MediaRouteButton 设为始终启用 (I1e9ff)。
  • 修复了一些 Android 版本运行时检查,这些检查会阻止使用 AndroidX 媒体路由器库访问 Android U 功能 (I97cab)。

版本 1.6.0-alpha03

2023 年 4 月 12 日

发布了 androidx.mediarouter:mediarouter:1.6.0-alpha03androidx.mediarouter:mediarouter-testing:1.6.0-alpha03。这是从内部分支发布的。

  • MediaRouteDescriptor 的公开范围 API 做出一些更改。
  • 废弃了 MediaRouteActionProvider.setAlwaysVisibleMediaRouteButton.setAlwaysVisible,使媒体路由按钮始终可见,无论网络连接性如何或媒体路由是否可用。
  • 修复了非动态路由控制器的音量调节问题。这修复了一个 bug,该 bug 会导致在输出切换器中尝试调整路线的音量时,音量会恢复为原始值 (93f409)。

版本 1.6.0-alpha02

2023 年 3 月 8 日

发布了 androidx.mediarouter:mediarouter:1.6.0-alpha02androidx.mediarouter:mediarouter-testing:1.6.0-alpha02。在内部分支上开发。

新功能

  • 向 AndroidX MediaRouter 添加了路线列表偏好设置支持。
  • 添加了对 MediaRouteDescriptor 的可见性支持。

bug 修复

  • 改进了 Android U+ 上的 SystemUI 输出切换器调用。

版本 1.6.0-alpha01

2023 年 2 月 10 日

发布了 androidx.mediarouter:mediarouter:1.6.0-alpha01版本 1.6.0-alpha01 中包含这些提交内容

新功能

  • 输出切换器的路由列表偏好设置

API 变更

  • 应用配置输出切换器的机制。

版本 1.4

版本 1.4.0

2023 年 5 月 3 日

发布了 androidx.mediarouter:mediarouter:1.4.0androidx.mediarouter:mediarouter-testing:1.4.0版本 1.4.0 中包含这些提交内容

自 1.3.1 以来的重要变更

  • 添加了 SystemOutputSwitcherDialogController#showDialog,以显示系统的输出切换器对话框,或在不支持系统输出切换器的 Wear 设备上显示蓝牙设置 Fragment。(Ic3d78)
  • 修复了回归问题,该问题会导致应用由于 MediaRouterProvider.notifyDynamicRoutesChanged 中的 IllegalArgumentException 而发生崩溃 (7d17ea)。
  • 添加了 MediaRouteDescriptor.Builder.clearControlFilters (I3a4e1)
  • MediaRouter 中添加了缺失的 MainThread 注解。(I3ef6e)
  • 在 API 33+ 上添加了广播接收器导出标记 (b2a663)。

版本 1.4.0-rc01

2023 年 4 月 5 日

发布了 androidx.mediarouter:mediarouter:1.4.0-rc01androidx.mediarouter:mediarouter-testing:1.4.0-rc01版本 1.4.0-rc01 中包含这些提交内容

  • 移除了 MediaRouteProviderDescriptor 中的 null 列表。

版本 1.4.0-beta02

2023 年 2 月 22 日

发布了 androidx.mediarouter:mediarouter:1.4.0-beta02版本 1.4.0-beta02 中包含这些提交内容

bug 修复

  • 修复了回归问题,该问题会导致应用由于 MediaRouterProvider.notifyDynamicRoutesChanged 中的 IllegalArgumentException 而发生崩溃 (7d17ea)。

版本 1.4.0-beta01

2023 年 1 月 25 日

发布了 androidx.mediarouter:mediarouter:1.4.0-beta01版本 1.4.0-beta01 中包含这些提交内容

API 变更

现在,如果所传递的路由无一处于 SELECTED 或 SELECTING 状态,DynamicGroupRouteController.notifyDynamicRoutesChanged() 会抛出 IllegalArgumentException。(8f6b3e)

bug 修复

  • 修复了因与 API 兼容的提供程序服务实现返回 null 路由提供程序而导致的崩溃问题。(63f16d)
  • 将受保护的广播接收器标记为未导出,使其适用于以 API 33 及更高级别为目标平台的应用。(784f8b)
  • 修复了 OverlayListView 中一些虚假的可为 null 性注解。(472e3f)
  • 修复了下述 bug:SystemOutputSwitcherDialogController.showDialog 中的 EXTRA_CLOSE_ON_CONNECT 会导致蓝牙设置 fragment 在 Wear 设备上突然关闭。(28c9d8)
  • 已更改为输出切换器公共方法的 Javadoc。(f0ae9444d2c9

版本 1.4.0-alpha01

2022 年 11 月 9 日

发布了 androidx.mediarouter:mediarouter:1.4.0-alpha01版本 1.4.0-alpha01 中包含这些提交内容

新功能

  • 添加了 SystemOutputSwitcherDialogController#showDialog,以显示系统的输出切换器对话框,或在不支持系统输出切换器的 Wear 设备上显示蓝牙设置 Fragment。(Ic3d78)

API 变更

  • 添加了 MediaRouteDescriptor.Builder.clearControlFilters (I3a4e1)
  • MediaRouter 中添加了缺失的 MainThread 注解。(I3ef6e)

bug 修复

  • 修复了调用 MediaRouter.removeUserRoute 导致的设备特定崩溃问题 (b/202931542)。
  • 修复了群组描述符无法一致地接收音量处理更新的问题 (461303)。
  • 在 API 33+ 上添加了广播接收器导出标记 (b2a663)。
  • 修复了由于从平台收到无效路由描述符而导致的崩溃问题 (dd5c09)。

版本 1.3

版本 1.3.1

2022 年 7 月 27 日

发布了 androidx.mediarouter:mediarouter:1.3.1版本 1.3.1 中包含这些提交内容

bug 修复

  • 解决了一个特定于设备的问题,即 MediaRouter.removeUserRoute() 会抛出意外的 IllegalArgumentException (b/202931542)。

版本 1.3.0

2022 年 4 月 20 日

发布了 androidx.mediarouter:mediarouter:1.3.0版本 1.3.0 中包含这些提交内容

自 1.2.0 以来的重要变更

  • MediaRouterParams 中添加了一个标记,用于在运行时停用无缝传输。
  • 添加了一个可重置 MediaRouter 的测试工件。
  • MediaRouterControllerDialog 中添加了一个用于调整用户体验的路由器参数。
  • 为公共方法添加了 null 注释。
  • 针对 AndroidX 启用了对 MissingGetterMatchingBuilder 的 API lint 检查。
  • 将 mediarouter 对 core 的依赖项更新至 1.6.0。

版本 1.3.0-rc01

2022 年 3 月 23 日

发布了 androidx.mediarouter:mediarouter:1.3.0-rc01版本 1.3.0-rc01 中包含这些提交内容

  • 与上个 Beta 版相比没有变化。

版本 1.3.0-beta01

2022 年 3 月 9 日

发布了 androidx.mediarouter:mediarouter:1.3.0-beta01版本 1.3.0-beta01 中包含这些提交内容

  • 与上个 Alpha 版相比没有变化。

版本 1.3.0-alpha01

2021 年 12 月 15 日

发布了 androidx.mediarouter:mediarouter:1.3.0-alpha01版本 1.3.0-alpha01 中包含这些提交内容

API 变更

  • MediaRouterParams 中添加了一个标记,用于在运行时停用无缝传输 (I53d68)
  • 添加了一个可重置 MediaRouter 的测试工件。(Id167c)
  • MediaRouterControllerDialog 中添加了一个用于调整用户体验的路由器参数 (I7e574)
  • 为公共方法添加了 null 注解 (Ifc901)

bug 修复

  • 针对 androidx 启用了对 MissingGetterMatchingBuilder 的 API lint 检查(I4bbeab/138602561

版本 1.2

版本 1.2.6

2022 年 1 月 26 日

发布了 androidx.mediarouter:mediarouter:1.2.6版本 1.2.6 中包含这些提交内容

bug 修复

  • 修复了 RemotePlaybackClient 构造函数在 Android 12 上会发生崩溃的问题 (b/210684559)

版本 1.2.5

2021 年 9 月 1 日

发布了 androidx.mediarouter:mediarouter:1.2.5版本 1.2.5 中包含这些提交内容

bug 修复

  • 在没有要传输的路由时,隐藏输出切换器中的媒体路由按钮。
  • 修复了群组成员路由的音量控制问题。

版本 1.2.4

2021 年 6 月 16 日

发布了 androidx.mediarouter:mediarouter:1.2.4版本 1.2.4 中包含这些提交内容

bug 修复

  • 修复了 MediaRouteButton 重放连接动画的问题。
  • 修复了 MediaRouteChooserDialog 中的路由垂直对齐问题。

版本 1.2.3

2021 年 5 月 5 日

发布了 androidx.mediarouter:mediarouter:1.2.3版本 1.2.3 中包含这些提交内容

bug 修复

  • 修复了自定义选择器对话框的 NullPointerException。
  • 修复了以下问题:如果 MediaRouteButton 被暂时停用,即便是在连接的情况下,它也会显示已断开连接状态。

版本 1.2.2

2021 年 2 月 10 日

发布了 androidx.mediarouter:mediarouter:1.2.2版本 1.2.2 中包含这些提交内容

bug 修复

  • 切勿试图在调用 OnDynamicRouteChangedListener.onRouteChanged 时重新选择所选路由。

版本 1.2.1

2021 年 1 月 13 日

发布了 androidx.mediarouter:mediarouter:1.2.1版本 1.2.1 中包含这些提交内容

bug 修复

  • 修复了以下问题:在 BT 处于可用状态时,调用 unselect() 会选择手机扬声器
  • 修复了 MediaRouter.Callback 计时问题。在 OnPrepareTransferListener#onPrepareTransfer 完成后,将会调用 Callback#onRouteSelectedCallback#onRouteUnselected

版本 1.2.0

2020 年 10 月 14 日

发布了 androidx.mediarouter:mediarouter:1.2.0版本 1.2.0 中包含这些提交内容

自 1.1.0 以来的主要功能

  • 支持无缝媒体传输,可通过系统界面实现媒体传输:如需了解详情,请观看 What's new in Media(媒体的新变化)视频
  • 更改了有关注册回调的指南。请参阅 MediaRouter.addCallback() 的 Javadoc 中的示例代码
  • 添加了新的监听器 MediaRouter#OnPrepareTransferListener,以便在所选路由将要更改时接收事件
  • 添加了 MediaRouterParams,以指明路由功能和界面类型。
  • 防止尝试将仅限内部使用的方法与 @RestrictTo(LIBRARY) 搭配使用

版本 1.2.0-rc02

2020 年 10 月 1 日

发布了 androidx.mediarouter:mediarouter:1.2.0-rc02版本 1.2.0-rc02 中包含这些提交内容

bug 修复

  • 修复了用户通过系统界面停止投射时不一定调用 RouteController#onUnselect 的问题。

版本 1.2.0-rc01

2020 年 9 月 16 日

发布了 androidx.mediarouter:mediarouter:1.2.0-rc01版本 1.2.0-rc01 中包含这些提交内容

bug 修复

  • 修复了连接到蓝牙音频设备时当前投射断开连接的问题。
  • 修复了在 MediaRouteProvider#notifyDynamicRoutesChanged() 中抛出 IllegalArgumentException 的问题。
  • 确保输出切换器中的停止投射功能可正常使用

版本 1.2.0-beta01

2020 年 9 月 2 日

发布了 androidx.mediarouter:mediarouter:1.2.0-beta01版本 1.2.0-beta01 中包含这些提交内容

新功能

  • 支持无缝媒体传输,可通过系统界面实现媒体传输:如需了解详情,请观看 What's new in Media(媒体的新变化)视频

API 变更

  • 支持 MediaRouter.OnPrepareTransferListener 使用 ListenableFuture

bug 修复

  • 修复了群组路由的音量控制问题。
  • 创建群组路由时,请先创建一个群组路由,稍后再创建成员路由。
  • 确保输出切换器中的“停止”选项正常工作。
  • 修复了未按预期调用的回调函数
    • RouteController#onSelect(创建路由会话时)。
    • MediaRouter.Callback#onRouteSelected(从 Cast 传输到手机时)。
    • MediaRouter.Callback#onRouteSelected(其中包含正确的群组路由信息)。
  • 支持移除回调函数

版本 1.2.0-alpha02

2020 年 7 月 22 日

发布了 androidx.mediarouter:mediarouter:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

API 变更

  • 添加了新的 MediaRouter.Callback#onRouteSelected,以便在所选路由与请求的路由不同时收到通知 (Ieee16)
  • 添加了新的监听器 MediaRouter#OnPrepareTransferListener,以便在所选路由将要更改时接收事件 (I6ace1)
  • 添加了 MediaRouterParam (I33150)
  • 更改了有关注册回调的指南。请参阅 MediaRouter.addCallback() 的 Javadoc 中的示例代码 (I58112)

版本 1.2.0-alpha01

2020 年 4 月 15 日

发布了 androidx.mediarouter:mediarouter:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

API 变更

  • 防止尝试将仅限内部使用的方法与 @RestrictTo(LIBRARY) 搭配使用

bug 修复

  • 解决了投射对话框的 Talkback 问题
  • 通过锁定保护 DynamicGroupRouterController 的监听器

版本 1.1

版本 1.1.0

2019 年 9 月 5 日

发布了 androidx.mediarouter:mediarouter:1.1.0。点击此处可查看此版本中包含的提交内容。

自 1.0.0 以来的重要变更

  • 动态群组支持
    • 允许用户动态添加或移除路由设备。
    • 要启用动态群组,请调用 MediaRouteButton.enableDynamicGroup();应用会显示一个关于动态群组的新对话框
    • 已安装的 MediaRouteProvider 也需要支持动态群组才能真正启用该功能。

版本 1.1.0-rc01

2019 年 6 月 13 日

发布了 androidx.mediarouter:mediarouter:1.1.0-rc01,该版本与 1.1.0-beta02 相比没有变化。点击此处可查看此版本中包含的提交内容。

版本 1.1.0-beta02

2019 年 6 月 5 日

发布了 androidx.mediarouter:mediarouter:1.1.0-beta02。点击此处可查看此版本中包含的提交内容。

新功能

  • 支持在 MediaRouter 对话框中使用 RTL 语言

bug 修复

  • 修复了 MediaRoute 对话框底部的内边距

版本 1.1.0-beta01

2019 年 5 月 7 日

发布了 androidx.mediarouter:mediarouter:1.1.0-alpha01。点击此处可查看此版本中包含的提交内容。

新功能

  • 对于标记为 @NonNull 的 null 参数,已将 IllegalPointerException 更改为 NullPointerException

API 变更

  • 更改了 DynamicRouteDescriptor 的回调逻辑。现在 MediaRouteProvider 会调用 MediaRouterProvider.DynamicGroupController.notifyDynamicRoutesChanged,而不是直接调用回调方法。

版本 1.1.0-alpha03

2019 年 4 月 3 日

发布了 androidx.mediarouter:mediarouter:1.1.0-alpha03。点击此处可查看此版本中包含的提交内容。

bug 修复

  • 修复了 MediaRouteVolumeSlider 和 RegisteredMediaRouteProvider 出现崩溃的问题。

版本 1.1.0-alpha02

2019 年 3 月 13 日

发布了 androidx.mediarouter:mediarouter:1.1.0-alpha02。点击此处可查看此版本中包含的完整提交内容列表。

新功能

  • 在 Android Studio 布局预览中支持 MediaRouteButton

API 变更

  • MediaRouteActionProviderMediaRouteButton 中添加了 enableDynamicGroup() 方法,以启用动态群组功能
  • MediaRouteActionProviderMediaRouteButton 中添加了 setAlwaysVisible(boolean) 方法,以使 MediaRouteButton 始终可见

bug 修复

  • 使 MediaRouteCastDialog 行易于点击
  • 移除了不必要的 onRouteChanged 回调调用

版本 1.1.0-alpha01

2018 年 12 月 3 日

新功能

  • 新增了对动态群组路由的支持
    • 新增了 API,以通过 MediaRouteProviders 支持动态群组路由
    • 为动态群组路由的路由选择器和控制器对话框添加了新的用户体验