Activación de la característica de imagen dentro de imagen en una aplicación
Mientras un usuario está en una llamada, una interfaz de usuario de pantalla completa puede impedirle realizar varias tareas en una aplicación. Hay dos maneras de permitir que el usuario realice varias tareas en la aplicación:
- Permitir que el usuario seleccione el botón Atrás y volver a la pantalla anterior. No hay ninguna interfaz de usuario de llamada visible mientras el usuario todavía está en la llamada.
- Activar la característica de imagen dentro de imagen.
En este artículo se muestra cómo activar la característica de imagen dentro de imagen en la Biblioteca de interfaz de usuario de Azure Communication Services. La característica de imagen dentro de imagen la proporciona el sistema y está sujeta a la compatibilidad del dispositivo con la característica, incluida la carga de CPU, la disponibilidad de RAM y el estado de la batería.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un recurso de Communication Services implementado. Cree un recurso de Communication Services.
- Un token de acceso de usuario para habilitar el cliente de llamada. Obtenga un token de acceso de usuario.
- Opcional: Realización del inicio rápido para empezar a trabajar con los compuestos de la Biblioteca de interfaz de usuario.
Active la característica
Para más información, consulte la Biblioteca de interfaz de usuario de código abierto de Android y el código de aplicación de ejemplo.
Configuración de la característica de imagen dentro de imagen
Para habilitar la multitarea y la característica de imagen dentro de imagen, utilice CallCompositeBuilder.multitasking
para establecer CallCompositeMultitaskingOptions
con los parámetros de constructor enableMultitasking
y enableSystemPictureInPictureWhenMultitasking
.
val callComposite: CallComposite =
CallCompositeBuilder()
.multitasking(CallCompositeMultitaskingOptions(true, true))
.build()
El botón Atrás aparece cuando enableMultitasking
se establece en true
.
Cuando el usuario pulsa el botón Atrás, la interfaz de usuario de llamada está oculta y, si está configurada, se muestra la vista Imagen dentro de imagen.
Cuando la multitarea está activada para CallComposite
, la actividad de llamada se inicia en una tarea dedicada. En el historial de tareas, el usuario ve dos pantallas: una para la actividad de la aplicación y otra para la actividad de llamada de Communication Services.
Para entrar en la multitarea mediante programación y, si se ha configurado la característica de imagen dentro de imagen, llame al método sendToBackground
.
Para devolver al usuario a la actividad de llamada mediante programación, use la función bringToForeground
:
Para más información, consulte la Biblioteca de interfaz de usuario de código abierto de iOS y el código de aplicación de ejemplo.
Requisitos previos
Un dispositivo iOS físico para ejecutar la aplicación. Un simulador de iOS no admite la funcionalidad imagen en imagen.
Configuración de la característica de imagen dentro de imagen
Para habilitar la multitarea y la característica de imagen dentro de imagen, use los parámetros de constructor enableMultitasking
y enableSystemPiPWhenMultitasking
de CallCompositeOptions
.
Nota:
Las aplicaciones que tienen un destino de implementación anterior a iOS 16 requieren el derecho com.apple.developer.avfoundation multitasking-camera-access
para usar la cámara en modo de imagen dentro de imagen.
let callCompositeOptions = CallCompositeOptions(
enableMultitasking: true,
enableSystemPictureInPictureWhenMultitasking: true)
let callComposite = CallComposite(withOptions: callCompositeOptions)
El botón Atrás aparece cuando enableMultitasking
se establece en true
.
Cuando el usuario pulsa el botón Atrás, la interfaz de usuario de llamada está oculta y, si está configurada, se muestra la vista Imagen dentro de imagen.
Para entrar o salir de la multitarea mediante programación, use la propiedad isHidden
:
// Close calling UI and display PiP
callComposite.isHidden = true
// Displaye calling UI and close PiP
callComposite.isHidden = false