Biblioteka Jetpack Picture-in-Picture (PiP) to uproszczone i niezawodne rozwiązanie, które umożliwia deweloperom aplikacji na Androida implementowanie funkcji PiP, zwłaszcza w przypadku aplikacji do odtwarzania multimediów, komunikacji wideo i nawigacji. Dzięki ujednoliconemu interfejsowi API biblioteka pomaga wyeliminować powtarzalny kod, typowe błędy w aplikacji i poprawić ogólną jakość korzystania z PiP.
Biblioteka Jetpack PiP ułatwia korzystanie z dotychczasowych interfejsów API PiP, rozwiązując kilka kluczowych problemów i niespójności w ekosystemie Androida:
- Fragmentacja systemu operacyjnego: biblioteka automatycznie obsługuje różnice w wywołaniach interfejsu API PiP
w różnych wersjach Androida, np. używa
enterPictureInPictureModeprzed Androidem 12 iisAutoEnterEnabledpo nim, dzięki czemu deweloperzy nie muszą zarządzać różnicami w wersjach . - Nieprawidłowe parametry PiP: biblioteka zapewnia ujednolicone rozwiązanie do prawidłowego
ustawiania parametrów PiP, np.
setSourceRectHint, aby tworzyć płynne i wysokiej jakości animacje podczas odtwarzania multimediów. - Ujednolicone wywołania zwrotne stanu PiP: biblioteka łączy
onPictureInPictureModeChangedionPictureInPictureUiStateChangedw jeden ujednolicony interfejs wywołania zwrotnego (PictureInPictureDelegate.OnPictureInPictureEventListener), co upraszcza zarządzanie stanem i interfejsem. - Ograniczenie kodu standardowego: biblioteka zmniejsza ilość powtarzalnego
kodu standardowego, oferując predefiniowane zestawy
RemoteActionsdo typowych przypadków użycia, takich jak sterowanie odtwarzaniem i działania związane z rozmowami wideo. - Przyszłościowe rozwiązania: kolejne funkcje PiP są dostarczane za pomocą biblioteki Jetpack, co pozwala użytkownikom uzyskiwać dostęp do dodatkowych funkcji przy minimalnym wysiłku.
Rozpoczęcie korzystania z Jetpack
Aby zacząć korzystać z biblioteki Jetpack, zastąp dotychczasową niestandardową implementację PiP interfejsami API biblioteki Jetpack. Złożoność i koszt wdrożenia będą się różnić w zależności od bieżącej implementacji aplikacji.
W sekcjach poniżej opisujemy niektóre typowe przypadki użycia PiP oraz niezbędne kroki implementacji:
Nawigacja
Aplikacja informuje bibliotekę o aktywnym lub nieaktywnym stanie nawigacji i ustawia proporcje obrazu. Resztą zajmuje się biblioteka Jetpack.
Najważniejsze różnice:
- Nie trzeba rozróżniać automatycznego i starszego trybu wchodzenia w tryb PiP po stronie aplikacji.
- Ujednolicone interfejsy wywołań zwrotnych.
- Nowy konstruktor
PictureInPictureParamsna potrzeby zgodności wstecznej.
Rozmowa wideo
Aplikacja informuje bibliotekę o aktywnym lub nieaktywnym stanie połączenia i ustawia proporcje obrazu.
Najważniejsze różnice:
- Nie trzeba rozróżniać automatycznego i starszego trybu wchodzenia w tryb PiP po stronie aplikacji.
- Ujednolicone interfejsy wywołań zwrotnych.
- Nowy konstruktor
PictureInPictureParamsna potrzeby zgodności wstecznej. - Ustandaryzowane ikony działań w przypadku rozmów wideo.
Odtwarzanie filmu
Biblioteka Jetpack oferuje delegaty odtwarzacza, które możesz zintegrować, aby zarządzać włączaniem i wyłączaniem PiP oraz dokładnie ustawiać wskazówkę dotyczącą prostokąta źródłowego.
Możesz też wybrać predefiniowany zestaw obiektów RemoteAction, podobnych do tych używanych w scenariuszach rozmów wideo.
Najważniejsze funkcje:
- Obsługuje zgodność wsteczną, nie wymaga sprawdzania wersji systemu operacyjnego.
- Synchronizacja stanu odtwarzania i automatyczne sterowanie wejściem.
- Ciągłe śledzenie geometrii za pomocą
SourceRectHint.