Cómo usar la biblioteca de Jetpack Picture-in-Picture

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 enterPictureInPictureMode antes de Android 12 y isAutoEnterEnabled despué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 onPictureInPictureModeChanged y onPictureInPictureUiStateChanged en 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 RemoteActions para 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:

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:

  1. No es necesario diferenciar el ingreso automático del ingreso heredado en el lado de la app.
  2. Interfaces de devolución de llamada consolidadas.
  3. Nuevo compilador PictureInPictureParams para 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:

  1. No es necesario diferenciar el ingreso automático del ingreso heredado en el lado de la app.
  2. Interfaces de devolución de llamada consolidadas.
  3. Nuevo compilador PictureInPictureParams para la retrocompatibilidad.
  4. Í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:

  1. Controla la retrocompatibilidad, no se requiere una verificación de la versión del SO.
  2. Sincronización del estado de reproducción y control de entrada automática
  3. Seguimiento continuo de la geometría con SourceRectHint.