La libreria Jetpack Picture in picture (PIP) offre una soluzione semplice e solida per gli sviluppatori di app per Android per implementare la funzionalità PIP, in particolare per app di riproduzione multimediale, comunicazione video e navigazione. Fornendo un'API unificata, la libreria contribuisce a eliminare il codice boilerplate, i bug comuni nelle app e a migliorare la qualità complessiva dell'esperienza utente PiP.
La libreria Jetpack PiP facilita le API PiP esistenti risolvendo diversi problemi e incongruenze chiave nell'ecosistema Android:
- Frammentazione del sistema operativo: la libreria gestisce automaticamente le differenze nelle chiamate API PiP tra le varie versioni di Android, ad esempio utilizzando
enterPictureInPictureModeprima di Android 12 eisAutoEnterEnableddopo, in modo che gli sviluppatori non debbano gestire le differenze di versione. - Parametri PIP errati: fornisce una soluzione unificata per impostare correttamente i parametri PIP, ad esempio
setSourceRectHint, per creare animazioni fluide e di alta qualità durante la riproduzione dei contenuti multimediali. - Callback unificati dello stato PIP: consolida
onPictureInPictureModeChangedeonPictureInPictureUiStateChangedin un'unica interfaccia di callback unificata (PictureInPictureDelegate.OnPictureInPictureEventListener) per una gestione semplificata dello stato e della UI. - Riduzione del codice boilerplate: la libreria riduce la quantità di codice boilerplate ripetitivo offrendo set predefiniti di
RemoteActionsper casi d'uso comuni, come controlli di riproduzione e azioni di videochiamata. - Preparazione per il futuro: altre funzionalità PIP vengono fornite tramite la libreria Jetpack, consentendo agli utenti di accedere a funzionalità aggiuntive con uno sforzo minimo o nullo.
Adottare Jetpack
Per adottare la libreria Jetpack, sostituisci l'implementazione personalizzata esistente della funzionalità PIP con le API della libreria Jetpack. La complessità e il costo dell'adozione variano in base all'implementazione attuale dell'app.
Le sezioni seguenti descrivono alcuni dei casi d'uso tipici di PIP e i passaggi di implementazione necessari:
Navigazione
L'app comunica alla libreria lo stato attivo o inattivo della navigazione e imposta le proporzioni. La libreria Jetpack si occupa del resto.
Differenze principali:
- Non è necessario distinguere l'inserimento automatico dall'inserimento legacy sul lato app.
- Interfacce di callback consolidate.
- Nuovo generatore
PictureInPictureParamsper la compatibilità con le versioni precedenti.
Videochiamata
L'app comunica alla libreria lo stato attivo o non attivo della chiamata e imposta le proporzioni.
Differenze principali:
- Non è necessario distinguere l'inserimento automatico dall'inserimento legacy sul lato app.
- Interfacce di callback consolidate.
- Nuovo generatore
PictureInPictureParamsper la compatibilità con le versioni precedenti. - Icone di azione standardizzate per le videochiamate.
Riproduzione video
La libreria Jetpack offre delegati del player che puoi integrare per gestire
l'attivazione o la disattivazione della modalità PIP e impostare con precisione il suggerimento del rettangolo di origine.
Puoi anche attivare un insieme predefinito di oggetti RemoteAction, simili a quelli utilizzati negli scenari di videochiamata.
Funzionalità principali:
- Gestisce la compatibilità con le versioni precedenti, non è necessario alcun controllo della versione del sistema operativo.
- Sincronizzazione dello stato di riproduzione e controllo dell'inserimento automatico.
- Monitoraggio continuo della geometria utilizzando
SourceRectHint.