La biblioteca de Jetpack de pantalla en pantalla (PIP) ofrece una solución optimizada y sólida para que los desarrolladores de apps para Android implementen la funcionalidad de PIP, en especial para apps de reproducción de contenido multimedia, comunicación por video y navegación. Al proporcionar una API unificada, la biblioteca ayuda a eliminar el código estándar, los errores comunes en la app y a mejorar la calidad general de la experiencia del usuario de PiP.
La biblioteca de PiP de Jetpack facilita las APIs de PiP existentes abordando varios desafíos clave y las incoherencias en todo el ecosistema de Android:
- Fragmentación del SO: La biblioteca controla automáticamente las diferencias en las llamadas a la API de PIP en varias versiones de Android, como el uso de
enterPictureInPictureModeantes de Android 12 yisAutoEnterEnableddespués, por lo que los desarrolladores no necesitan administrar las diferencias de versión. - Parámetros de PIP incorrectos: Proporciona una solución unificada para configurar correctamente los parámetros de PIP, por ejemplo,
setSourceRectHint, para crear animaciones fluidas y de alta calidad durante la reproducción de contenido multimedia. - Devoluciones de llamada de estado de PIP unificadas: Consolida
onPictureInPictureModeChangedyonPictureInPictureUiStateChangeden una sola interfaz de devolución de llamada unificada (PictureInPictureDelegate.OnPictureInPictureEventListener) para simplificar la administración del estado y la IU. - Reducción del código estándar: La biblioteca reduce la cantidad de código estándar repetitivo, ya que ofrece conjuntos predefinidos de
RemoteActionspara casos de uso comunes, como controles de reproducción y acciones de videollamadas. - Preparación para el futuro: Se proporcionan más funciones de PIP a través de la biblioteca de Jetpack, lo que permite a los adoptantes acceder a funciones adicionales con un esfuerzo mínimo o nulo.
Adopta Jetpack
Para adoptar la biblioteca de Jetpack, reemplaza tu implementación personalizada existente de PIP con las APIs de la biblioteca de Jetpack. La complejidad y el costo de la adopción variarán según la implementación actual de la app.
En las siguientes secciones, se describen algunos de los casos de uso típicos de PiP y los pasos de implementación necesarios:
Navegación
La app informa a la biblioteca el estado activo o inactivo de la navegación y establece la relación de aspecto. La biblioteca de Jetpack se encarga del resto.
Diferencias clave:
- No es necesario diferenciar el ingreso automático del ingreso heredado en el lado de la app.
- Interfaces de devolución de llamada consolidadas.
- Nuevo compilador
PictureInPictureParamspara la retrocompatibilidad.
Videollamada
La app informa a la biblioteca sobre el estado activo o inactivo de la llamada y establece la relación de aspecto.
Diferencias clave:
- No es necesario diferenciar el ingreso automático del ingreso heredado en el lado de la app.
- Interfaces de devolución de llamada consolidadas.
- Nuevo compilador
PictureInPictureParamspara la retrocompatibilidad. - Íconos de acción estandarizados para videollamadas.
Reproducción de los videos
La biblioteca de Jetpack ofrece delegados de reproductor que puedes integrar para administrar la habilitación o inhabilitación del PIP y establecer con precisión la sugerencia del rectángulo de origen.
También puedes habilitar un conjunto predefinido de objetos RemoteAction, similares a los que se usan en situaciones de videollamadas.
Funciones clave:
- Controla la retrocompatibilidad, no se requiere una verificación de la versión del SO.
- Sincronización del estado de reproducción y control de entrada automática
- Seguimiento continuo de la geometría con
SourceRectHint.