Biblioteka Jetpack Picture-in-Picture (PiP) to uproszczone i solidne rozwiązanie dla programistów aplikacji na Androida, które umożliwia 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ść obsługi funkcji obrazu w obrazie.
Biblioteka Jetpack PiP ułatwia korzystanie z dotychczasowych interfejsów API PiP, rozwiązując kilka kluczowych problemów i niezgodnoś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, więc programiści nie muszą zarządzać różnicami między wersjami. - Nieprawidłowe parametry PiP: 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: ujednolica wywołania zwrotne
onPictureInPictureModeChangedionPictureInPictureUiStateChangedw jeden ujednolicony interfejs wywołań zwrotnych (PictureInPictureDelegate.OnPictureInPictureEventListener), co upraszcza zarządzanie stanem i interfejsem. - Ograniczenie ilości kodu standardowego: biblioteka zmniejsza ilość powtarzalnego kodu standardowego, oferując predefiniowane zestawy
RemoteActionsdo typowych przypadków użycia, takich jak elementy sterujące odtwarzaniem i działania związane z rozmowami wideo. - Przyszłościowe rozwiązanie: kolejne funkcje PiP są dostarczane za pomocą biblioteki Jetpack, co pozwala użytkownikom uzyskiwać dostęp do dodatkowych funkcji przy minimalnym wysiłku lub bez niego.
Wdrażanie Jetpacka
Aby wdrożyć bibliotekę Jetpack, zastąp dotychczasową niestandardową implementację PiP interfejsami API biblioteki Jetpack. Złożoność i koszt wdrożenia zależą od obecnej implementacji aplikacji.
W sekcjach poniżej opisujemy typowe przypadki użycia trybu obrazu w obrazie oraz niezbędne kroki wdrożenia:
Nawigacja
Aplikacja informuje bibliotekę o stanie aktywności lub nieaktywności nawigacji i ustawia współczynnik proporcji. Resztą zajmie się biblioteka Jetpack.
Najważniejsze różnice:
- Nie musisz rozróżniać automatycznego i starszego sposobu wprowadzania danych po stronie aplikacji.
- Skonsolidowane interfejsy wywołań zwrotnych.
- Nowy konstruktor
PictureInPictureParamszapewniający zgodność wsteczną.
Rozmowa wideo
Aplikacja informuje bibliotekę o stanie połączenia (aktywne lub nieaktywne) i ustawia współczynnik proporcji.
Najważniejsze różnice:
- Nie musisz rozróżniać automatycznego i starszego sposobu wprowadzania danych po stronie aplikacji.
- Skonsolidowane interfejsy wywołań zwrotnych.
- Nowy konstruktor
PictureInPictureParamszapewniający zgodność wsteczną. - Standardowe ikony działań w przypadku rozmów wideo.
Odtwarzanie filmu
Biblioteka Jetpack udostępnia delegaty odtwarzacza, które możesz zintegrować, aby zarządzać włączaniem i wyłączaniem trybu obraz w obrazie oraz dokładnie ustawiać wskazówkę dotyczącą prostokąta źródłowego.
Możesz też włączyć wstępnie zdefiniowany zestaw RemoteAction obiektów, podobny do tych, które są używane 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.