Utiliser la bibliothèque Jetpack Picture-in-Picture

La bibliothèque Jetpack Picture-in-picture (PIP) offre une solution simplifiée et robuste aux développeurs d'applications Android pour implémenter la fonctionnalité PIP, en particulier pour les applications de lecture multimédia, de communication vidéo et de navigation. En fournissant une API unifiée, la bibliothèque permet d'éliminer le code récurrent, les bugs courants dans les applications et d'améliorer la qualité globale de l'expérience utilisateur en mode Picture-in-picture.

La bibliothèque Jetpack PiP facilite les API PiP existantes en résolvant plusieurs problèmes et incohérences clés dans l'écosystème Android :

  • Fragmentation de l'OS : la bibliothèque gère automatiquement les différences dans les appels d'API PiP entre les différentes versions d'Android, par exemple en utilisant enterPictureInPictureMode avant Android 12 et isAutoEnterEnabled après. Les développeurs n'ont donc pas besoin de gérer les différences de version.
  • Paramètres PiP incorrects : fournit une solution unifiée pour définir correctement les paramètres PiP, par exemple setSourceRectHint, afin de créer des animations fluides et de haute qualité lors de la lecture de contenus multimédias.
  • Rappels d'état PiP unifiés : ils regroupent onPictureInPictureModeChanged et onPictureInPictureUiStateChanged dans une interface de rappel unique et unifiée (PictureInPictureDelegate.OnPictureInPictureEventListener) pour simplifier la gestion de l'état et de l'UI.
  • Réduction du code récurrent : la bibliothèque réduit la quantité de code récurrent en proposant des ensembles prédéfinis de RemoteActions pour les cas d'utilisation courants, tels que les commandes de lecture et les actions d'appel vidéo.
  • Pérennité : d'autres fonctionnalités PiP sont fournies par le biais de la bibliothèque Jetpack, ce qui permet aux utilisateurs d'accéder à des fonctionnalités supplémentaires avec un effort minimal, voire nul.

Adopter Jetpack

Pour adopter la bibliothèque Jetpack, remplacez votre implémentation PiP personnalisée existante par les API de la bibliothèque Jetpack. La complexité et le coût de l'adoption varient en fonction de l'implémentation actuelle de l'application.

Les sections suivantes décrivent certains cas d'utilisation typiques du mode PIP et les étapes d'implémentation nécessaires :

L'application informe la bibliothèque de l'état actif ou inactif de la navigation et définit le format. La bibliothèque Jetpack s'occupe du reste.

Différences majeures :

  1. Il n'est pas nécessaire de faire la différence entre l'entrée automatique et l'ancienne entrée côté application.
  2. Interfaces de rappel consolidées.
  3. Nouveau générateur PictureInPictureParams pour la rétrocompatibilité.

Appel vidéo

L'application informe la bibliothèque de l'état actif ou inactif de l'appel et définit le format.

Différences majeures :

  1. Il n'est pas nécessaire de faire la différence entre l'entrée automatique et l'ancienne entrée côté application.
  2. Interfaces de rappel consolidées.
  3. Nouveau générateur PictureInPictureParams pour la rétrocompatibilité.
  4. Icônes d'action standardisées pour les appels vidéo.

Lecture de vidéos

La bibliothèque Jetpack propose des délégués de lecteur que vous pouvez intégrer pour gérer l'activation ou la désactivation du mode PIP et définir précisément l'indication du rectangle source. Vous pouvez également activer un ensemble prédéfini d'objets RemoteAction, semblables à ceux utilisés dans les scénarios d'appels vidéo.

Principales fonctionnalités :

  1. Gère la rétrocompatibilité. Aucune vérification de la version de l'OS n'est requise.
  2. Synchronisation de l'état de lecture et contrôle de l'entrée automatique.
  3. Suivi continu de la géométrie à l'aide de SourceRectHint.