你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在应用程序中启用画中画功能

当用户在通话时,全屏 UI 可能会阻止用户在应用中进行多任务处理。 有两种方法让用户能够在应用中进行多任务处理:

  • 使用户能够选择“后退”按钮并返回到上一个屏幕。 用户仍在通话时,不会显示通话 UI。
  • 启用画中画功能。

本文介绍如何启用 Azure 通信服务 UI 库中的画中画功能。 画中画功能是系统提供的,受设备上的功能支持的影响(包括 CPU 负载、RAM 可用性和电池状态)。

先决条件

启用功能

有关详细信息,请参阅开源 Android UI 库示例应用程序代码

画中画设置

若要启用多任务处理和画中画,请使用 CallCompositeBuilder.multitaskingCallCompositeMultitaskingOptions 设置 enableMultitaskingenableSystemPictureInPictureWhenMultitasking 构造函数参数。

val callComposite: CallComposite =
            CallCompositeBuilder()
            .multitasking(CallCompositeMultitaskingOptions(true, true))
            .build()

enableMultitasking 设置为 true 时,会显示“后退”按钮。

显示了“后退”按钮的 Android 通话屏幕的屏幕截图。

当用户点击“后退”按钮时,“通话 UI”会隐藏;如果已配置,则会显示“画中画”视图。

当为 CallComposite 启用多任务处理时,通话活动将在专用任务中启动。 在任务历史记录中,用户会看到两个屏幕:一个显示应用的活动,另一个显示通信服务通话活动。


在配置了显示画中画的情况下,若要以编程方式进入多任务处理,请调用 sendToBackground 方法。

callComposite.sendToBackground()

若要以编程方式将用户带回到通话活动,请使用 bringToForeground 函数:

callComposite.bringToForeground(context)

有关详细信息,请参阅开源 iOS UI 库示例应用程序代码

先决条件

一台实体 iOS 设备,用于运行应用。 iOS 模拟器不支持画中画功能。

画中画设置

若要启用多任务处理和画中画,请使用 CallCompositeOptions 构造函数参数 enableMultitaskingenableSystemPiPWhenMultitasking

注意

部署目标低于 iOS 16 的应用需要 com.apple.developer.avfoundation multitasking-camera-access 权利才能以画中画模式使用相机。

let callCompositeOptions = CallCompositeOptions(
            enableMultitasking: true,
            enableSystemPictureInPictureWhenMultitasking: true)

let callComposite = CallComposite(withOptions: callCompositeOptions)

enableMultitasking 设置为 true 时,会显示“后退”按钮。

显示了“后退”按钮的 iOS 通话屏幕的屏幕截图。

当用户点击“后退”按钮时,“通话 UI”会隐藏;如果已配置,则会显示“画中画”视图。


若要以编程方式进入或退出多任务处理,请使用 isHidden 属性:

// Close calling UI and display PiP
callComposite.isHidden = true
// Displaye calling UI and close PiP
callComposite.isHidden = false

后续步骤