prise en charge de L’image dans l’image

Android 8.0 (niveau API 26) permet de lancer des activités en mode image dans l’image (PIP). PIP est un type particulier de mode multi-fenêtre principalement utilisé pour la vidéo playback.It permet à l’utilisateur de regarder une vidéo dans une petite fenêtre épinglée àun coin de l’écran tout en naviguantentre les applications ou le contenu de navigation sur l’écran principal.

hélas, votre navigateur ne prend pas en charge la vidéo HTML5. C’est OK! Vous pouvez toujours télécharger la vidéo et de la regarder avec un lecteur vidéo.,

PIP exploite les API multi-fenêtres disponibles dans Android 7.0 pour fournir la fenêtre de superposition vidéo épinglée. Pour ajouter PIP à votre application, vous devez enregistrer vos activités qui prennent en charge PIP, basculer votre activité en mode PIP en tant que nécessaire, et assurez-vous que les éléments de L’interface utilisateur sont cachés et que la lecture vidéo continue lorsque l’activité est en mode PIP.

la fenêtre PIP apparaît dans le calque le plus haut de l’écran, dans un coin choisi par le système. Vous pouvez faire glisser la fenêtre PIP vers un autre emplacement., Lorsque vous appuyez sur la fenêtre, deux contrôles spéciaux apparaissent: une bascule plein écran (au centre de la fenêtre) et un bouton de fermeture (Un « X » en haut à droitcorner).

votre application contrôle lorsque l’activité en cours passe en mode PIP. Voici quelques exemples:

  • une activité peut entrer en mode PIP lorsque l’utilisateur appuie sur le bouton home ou recentsbutton pour choisir une autre application. (C’est ainsi que Google Maps continue d’afficher les directions pendant que l’userruns une autre activité en même temps.)
  • votre application peut déplacer une vidéo en mode PIP lorsque l’utilisateur navigue à partir de la vidéo pour parcourir d’autres contenus.,
  • votre application peut basculer une vidéo en mode PIP pendant qu’un utilisateur regarde la fin d’un épisode de contenu. L’écran principal affiche promotionnel ou résuméinformations sur le prochain épisode de la série.
  • votre application peut fournir aux utilisateurs un moyen de mettre en file d’attente du contenu supplémentaire tout en regardant une vidéo. La vidéo continue à être lue en mode PIP tandis que l’écran principal affiche une activité de sélection de contenu.

déclaration de la prise en charge de l’image dans l’image

par défaut, le système ne prend pas automatiquement en charge PIP pour les applications.,Si vous souhaitez prendre en charge PIP dans votre application, enregistrez votre videoactivity dans votre manifeste en définissantandroid:supportsPictureInPicture sur true. Spécifiez également que votre activité gère les modifications de configuration de mise en page afin que votre activité ne se relance pas lorsque des modifications de mise en page se produisent pendant les transitions de mode PIP.

passage de votre activité à picture-in-picture

Pour passer en mode picture-in-picture, une activité doit appelerenterPictureInPictureMode()., Par exemple, le code suivant bascule une activité en mode PIP lorsque l’utilisateur clique sur un bouton dédié dans l’interface utilisateur de l’application:

Vous pouvez inclure une logique qui bascule une activité en mode PIP au lieu d’aller dans thebackground. Par exemple, Google Maps passe en mode PIP si l’utilisateur appuie sur le bouton home ou recentsbutton pendant la navigation de l’application., Vous pouvez prendre ce cas en remplaçant onUserLeaveHint():

Gestion de l’INTERFACE utilisateur au cours de l’image-dans-image

Lorsque l’activité entrée ou à la sortie de l’image en mode d’image le système appelleActivity.onPictureInPictureModeChanged() ouFragment.onPictureInPictureModeChanged().

Vous devez remplacer ces rappels pour redessiner les éléments de l’interface utilisateur de l’activité. Gardez à l’esprit que le mode inPIP votre activité est affichée dans une petite fenêtre. Les utilisateurs ne peuvent pas interagir avec les éléments de L’interface utilisateur en mode inPIP et les détails des petits éléments de l’interface utilisateur peuvent être difficiles à voir. Les activités de lecture vidéo avec une interface utilisateur minimale offrent la meilleure expérience utilisateur., L’activité ne doit afficher que playbackcontrols vidéo. Supprimez les autres éléments de L’interface utilisateur avant que votre activité n’entre dans PIP et restaurez-les Lorsque votreactivité redevient plein écran:

ajout de contrôles

la fenêtre PIP peut afficher les contrôles lorsque l’utilisateur ouvre le menu de la fenêtre (en appuyant sur la fenêtresur un appareil mobile ou en sélectionnant le menu)

si une application a une session activemedia, les contrôles play, pause, next et previous apparaîtront.,

Vous pouvez également spécifier explicitement des actions personnalisées en construisantPictureInPictureParamsavecPictureInPictureParams.Builder.setActions()avant d’entrer en mode PIP, et passez les paramètres lorsque vous entrez en mode PIP en utilisantenterPictureInPictureMode(android.app.PictureInPictureParams)ousetPictureInPictureParams(android.app.PictureInPictureParams). soyez prudent. Si vous essayez d’ajouter plus degetMaxNumPictureInPictureActions() vous n’obtiendrez que le nombre maximum.

poursuite du videoplayback dans l’image

lorsque votre activité passe à PIP, le système Place l’activité dans l’état mis en cause et appelle la méthodeonPause() de l’activité., La lecture vidéo ne doit pas être interrompue et doit continuerjouer si l’activité est interrompue en mode PIP.

Dans Android 7.0 et versions ultérieures, vous devez mettre en pause et reprendre la lecture vidéo lorsque le système appelleonStop() EtonStart(). En faisant cela, vous pouvez éviter d’avoir à vérifier si votre application est en mode PIP dansonPause() et de continuer explicitement la lecture.,

Si vous devez interrompre la lecture dans votre implémentationonPause(), vérifiez le mode PIP en appelantisInPictureInPictureMode() et gérez la lecture de manière appropriée, par exemple:

lorsque votre activité passe du mode PIP au mode plein écran, le système reprend votre activité et appelle votreonResume() méthode.

en utilisant une seule activité de lecture pour image dans l’image

dans votre application, un utilisateur peut sélectionner une nouvelle vidéo lors de la recherche de contenu sur l’écran principal, alors qu’une activité de lecture vidéo est en mode PIP., Lire le newvideo dans l’activité de lecture existante en mode plein écran, au lieu de lancer une nouvelle activité qui pourrait dérouter l’utilisateur.

pour vous assurer qu’une seule activité est utilisée pour les demandes de lecture vidéo et commutée en mode PIP ou hors du mode PIP selon vos besoins, définissezandroid:launchMode sur singleTask dans votre manifeste:

<activity android:name="VideoActivity" ... android:supportsPictureInPicture="true" android:launchMode="singleTask" ...

dans »a1875611c5″> et gérer la nouvelle vidéo, en arrêtant tout VIDEOPLAYBACK existant si nécessaire.

meilleures pratiques

PIP peut être désactivé sur les appareils dont la RAM est faible., Avant que votre application utilise PIP, Vérifiez qu’elle est disponible en appelant hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).

PIP est destiné aux activités qui lisent des vidéos en plein écran. Lorsque vous basculez votre activité en mode PIP, évitez de montrer autre chose que du contenu vidéo.Suivez lorsque votre activité entre en mode PIP et masquez les éléments de l’interface utilisateur, comme décrit dans la gestion de l’interface utilisateur pendant l’image dans l’image.

étant donné que la fenêtre PIP est affichée comme une fenêtre flottante dans le coin de l’écran, vous devez éviter d’Afficher des informations critiques dans l’écran principal dans toute zone pouvant être masquée par la fenêtre PIP.,

Lorsqu’une activité est en mode PIP, par défaut, elle n’obtient pas le focus d’entrée. Pour recevoir des événements d’entrée en mode PIP, utilisez MediaSession.setCallback(). Pour plus d’informations sur l’utilisation desetCallback() seeDisplayinga maintenant jouer la carte.

lorsque votre application est en mode PIP, la lecture vidéo dans la fenêtre PIP peut causer des interférences audio avec une autre application, telle qu’une application de lecteur de musique ou une application de recherche vocale. Pour éviter cela, demandez la mise au point audio lorsque vous commencez à lire la vidéo et gérez les notifications de changement de mise au point audio,comme décrit dans Gérer AudioFocus., Si vous recevez une notification de perte de mise au point audio en mode PIP,mettez en pause ou arrêtez la lecture vidéo.

lorsque votre application est sur le point d’entrer dans PIP, notez que seule L’activité supérieure entrera Picture-in-Picture. Dans certaines situations telles que sur les périphériques multi-fenêtres, il est possible que l’activité ci-dessous soit désormais affichée et redevienne visible à côté de l’activité PIP. Vous devez gérer ce cas en conséquence, y compris l’activité ci-dessous pour obtenir un rappel onResume() ou un rappel onPause(). Il est également possible que l’utilisateur peut interagir avec l’activité., Par exemple, si une activité de liste vidéo est affichée et que l’activité de lecture vidéo est en mode PIP, l’utilisateur peut sélectionner une nouvelle vidéo dans la liste et l’activité PIP doit être mise à jour en conséquence.

code D’exemple supplémentaire

pour télécharger un exemple d’application écrit dans Android, seePicture-in-Picture Sample.To téléchargez un exemple d’application écrit en Kotlin, voirandroid PictureInPicture Sample (Kotlin).

Author: admin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *