使用 Jetpack 画中画库

画中画 (PiP) Jetpack 库为 Android 应用开发者提供了一种简便而强大的解决方案,可用于实现 PiP 功能,尤其适用于媒体播放、视频通信和导航应用。通过提供统一的 API,该库有助于消除样板代码、常见的应用内 bug,并提高画中画用户体验的整体质量。

PiP Jetpack 库通过解决 Android 生态系统中的几个关键挑战和不一致问题,简化了现有的 PiP API:

  • 操作系统碎片化:该库会自动处理各种 Android 版本中 PiP API 调用的差异,例如在 Android 12 之前使用 enterPictureInPictureMode,在 Android 12 之后使用 isAutoEnterEnabled,因此开发者无需管理版本差异。
  • 不正确的 PiP 参数:它提供了一个统一的解决方案,用于正确设置 PiP 参数(例如 setSourceRectHint),以便在媒体播放期间创建流畅且高质量的动画。
  • 统一的画中画状态回调:它将 onPictureInPictureModeChangedonPictureInPictureUiStateChanged 合并为一个统一的回调接口 (PictureInPictureDelegate.OnPictureInPictureEventListener),以简化状态和界面管理。
  • 减少样板代码:该库通过为常见用例(例如播放控件和视频通话操作)提供预定义的 RemoteActions 集,减少了重复的样板代码量。
  • 面向未来的设计:更多 PiP 功能通过 Jetpack 库提供,让采用者能够以极少的精力甚至无需任何精力即可访问其他功能。

采用 Jetpack

为了采用 Jetpack 库,请将现有的自定义 PiP 实现替换为 Jetpack 库 API。采用的复杂性和成本将因应用的当前实现情况而异。

以下各部分介绍了 PiP 的一些典型应用场景以及必要的实现步骤:

应用会告知库导航的有效或无效状态,并设置宽高比。Jetpack 库会处理其余事宜。

主要区别

  1. 无需在应用端区分自动进入和旧版进入。
  2. 整合的回调接口。
  3. 新的 PictureInPictureParams 构建器,用于实现向后兼容性。

视频通话

应用会告知库通话的有效或无效状态,并设置宽高比。

主要区别

  1. 无需在应用端区分自动进入和旧版进入。
  2. 整合的回调接口。
  3. 新的 PictureInPictureParams 构建器,用于实现向后兼容性。
  4. 视频通话的标准操作图标。

视频播放

该 Jetpack 库提供可集成的播放器委托,用于管理 PiP 启用或停用,并准确设置源矩形提示。您还可以选择加入一组预定义的 RemoteAction 对象,这些对象与视频通话场景中使用的对象类似。

主要功能

  1. 处理向后兼容性,无需进行操作系统版本检查。
  2. 播放状态同步和自动进入控制。
  3. 使用 SourceRectHint 进行连续几何图形跟踪。