Google dodał interfejs API, który pozwala programom uruchamiającym innych firm, takim jak Nova Launcher, wyświetlać bardziej płynne animacje przejść. Teraz mają ją tylko telefony Pixel.
W przeszłości aplikacje uruchamiające innych firm często zapewniały lepsze wrażenia niż podstawowy program uruchamiający dostępny na większości telefonów z systemem Android. Jednak wraz z modernizacją ekranu najnowszych aplikacji i wprowadzeniem gestów w Androidzie 9 Pie, wyrzutnie innych firm znalazły się w niekorzystnej sytuacji, ponieważ te nowe doświadczenia zostały zintegrowane z zapasem aplikacja uruchamiająca. Z biegiem czasu Google starał się, aby program uruchamiający innej firmy nie był tak straszny podczas korzystania z gestów i ostatnio zaczęło mu się to udawać.
Jeśli w ciągu ostatnich kilku miesięcy korzystałeś z najnowszej wersji beta programu Nova Launcher na telefonie Google Pixel, być może zauważyłeś płynne animacje podczas korzystania z nawigacji gestami. Niestety, nie zobaczysz tych samych animacji podczas korzystania z Nova Launcher na żadnym innym urządzeniu, przynajmniej na razie. Aby zrozumieć, dlaczego najpierw musimy krótko wyjaśnić, co odróżnia programy uruchamiające innych firm, takie jak Nova Launcher, od standardowych programów uruchamiających, takich jak Google Pixel Launcher.
Google jako pierwszy wprowadził nawigację gestami w Androidzie 9 Pie. Aby gesty były jak najbardziej płynne, Google musiał zadbać o to, aby przejścia między aplikacjami wyglądały płynnie. Chcieli także umożliwić użytkownikom dostęp do całej listy aplikacji z ekranu ostatnich aplikacji. Aby osiągnąć oba te cele, Google zdecydowało się przenieść kod obsługujący ekran najnowszych aplikacji z systemu Android SystemUI do Launcher3, aplikacja uruchamiająca typu open source dla systemu Android, z której pochodzi większość standardowych programów uruchamiających OEM. Więc Szybki krok narodził się komponent, a ze względu na swój uprzywilejowany charakter system Android pozwala jedynie na ustawienie preinstalowanej aplikacji uruchamiającej jako dostawcy najnowszych aplikacji. To może być zastąpione dostępem roota jeśli program uruchamiający innej firmy go obsługuje, ale dla większości użytkowników oznacza to, że aplikacja uruchamiająca innej firmy zawsze będzie polegać na podstawowym programie uruchamiającym w zakresie obsługi gestów i ekranu ostatnich aplikacji. Rezultat, jak większość z Was prawdopodobnie doświadczyła, może być nieco chwiejny, a przejścia nie wyglądają płynnie i płynnie. Chyba, że korzystasz z telefonu Google Pixel.
Na większości telefonów Google Pixel istnieje interfejs API, którego mogą używać programy uruchamiające innych firm, aby przejście z aplikacji z powrotem na ekran główny wyglądało znacznie bardziej natywnie. Niektóre aplikacje uruchamiające innych firm, takie jak Wyrzutnia Niagary i wspomniany Nova Launcher korzystają z tego interfejsu API, chociaż ten ostatni zawiera go tylko w swoim kompilacje v7 w fazie rozwoju. Gdy używany jest ten interfejs API, aplikacja uruchamiająca innej firmy otrzymuje zamiar i wywołanie zwrotne od QuickStep za każdym razem, gdy użytkownik wykona gest przeciągnięcia, aby wrócić do domu. Program uruchamiający innej firmy może następnie podpowiedzieć systemowi gestów, jak animować okno podczas jego minimalizacji do ikony aplikacji.
Oto przykład tego, jak to wygląda w programie Niagara Launcher, dzięki uprzejmości twórcy programu uruchamiającego 8bitpit:
A oto porównanie, które pokazuje, jak wygląda animacja na Telefon ASUS ROG 5 I Google Pixel 4, zarówno z Nova Launcherem v7.0.25 (najnowsza wersja beta w momencie publikacji), jak i Androidem 11:
\r\n https://www.youtube.com/watch? v=equ-8yDw_Do\r\n
Teraz możesz się zastanawiać: czy ten interfejs API jest przeznaczony wyłącznie dla telefonów Google Pixel? Odpowiedź brzmi: nie, nie jest. Interfejs API jest częścią Launcher3/QuickStep i można znaleźć w AOSP, co oznacza, że jest otwarty na dowolną aplikację uruchamiającą OEM. Podczas gdy API był zaangażowany w Launcher3 wewnętrznie w dniu 21 lipca 2020 r., wydaje się, że tak połączyły się z gałęzią główną AOSP wraz z wydaniem Androida R QPR1 w grudniu.
Kevin Barry, twórca Nova Launchera i jeden z pierwszych, którzy zauważyli to API, powiedział nam, że podejrzewa, że część Powodem, dla którego producenci OEM nie używają tego interfejsu API w swoich forkach Launchera 3, jest to, że pojawił się on nieco późno w wydaniu Androida 11 cykl. Połączenie dużych zmian AOSP wymaga sporo wysiłku, a aktualizacja Androida R QPR1 zdecydowanie zawierała ich wiele. W przeszłości nazywaliśmy te kody „wersją konserwacyjną”, ale Google tak naprawdę już tego nie robi po odmowie ze strony producentów OEM (przynajmniej tak słyszałem). Właśnie dlatego LineageOS, popularna niestandardowa pamięć ROM dla systemu Android, nazywa swoją najnowszą wersję „LineageOS 18.1" zamiast "LineageOS 18", co oznacza, że pamięć ROM jest oparta na najnowszym kodzie Androida 11, a nie na początkowej wersji Androida 11.
Warto również zauważyć, że ten interfejs API jest dostępny tylko na telefonach Google Pixel po Grudniowa rezygnacja z funkcji Pixel, co zbiega się z publiczną wersją Androida R QPR1. I pomimo tego, że Pixel 2 to otrzymał ostatnia aktualizacja w grudniu, aktualizacja ta nie obejmowała bazy kodu Androida R QPR1, dlatego właściciele Pixela 2 z Nova Launcherem v7 nie mają takich samych wrażeń jak inne Pixele. (Właściciele Pixela 2 mogą pobrać nowszą wersję programu Pixel Launcher, która ma interfejs API z nowszego urządzenia Pixel, ale wskazują raporty użytkowników animacja nadal jest błędna, nawet jeśli działa od czasu do czasu. Przypominamy, że Pixel Launcher opiera się na Launcherze 3, tak jak większość standardowych programów uruchamiających, ale zawiera także pewne funkcje dostępne wyłącznie dla Pixela.)
Co zatem trzeba zrobić, aby ten interfejs API został dodany do innych urządzeń z systemem Android? Niestety nie ma na to prostej odpowiedzi, ponieważ nie wiemy dokładnie, w jaki sposób każdy producent OEM rozwija swoją aplikację uruchamiającą. Biorąc pod uwagę, jak Google ściśle kontroluje nawigację gestami na pełnym ekranie, podejrzewamy, że większość producentów OEM nie modyfikuje znacząco kodu związanego z gestami i/lub QuickStep. Chyba że producent OEM zrobi wszystko, co w jego mocy, aby cofnąć zatwierdzenie, złamać kod lub odmówić aktualizacji Launcher3, powinniśmy zobaczyć, jak ten interfejs API zostanie dodany do programów uruchamiających OEM za każdym razem, gdy bazują na nim nadchodzące Androida 12 uwolnienie. W rzeczywistości jeden producent OEM, z którym rozmawialiśmy, firma ASUS, powiedział nam, że planuje wprowadzić ten interfejs API w swojej aktualizacji Androida 12. Nie wiemy, czy Google poinformował o tej zmianie producentów OEM, ale mamy nadzieję, że więcej producentów OEM zauważy tę zmianę i decydują się na włączenie interfejsu API do swoich forków Launchera3, aby poprawić komfort korzystania z usług stron trzecich miotacze.
Na tym jednak praca się nie zakończy. Nawet po włączeniu tego interfejsu API nadal pozostaje wiele do zrobienia, aby osiągnąć zgodność między programami uruchamiającymi innych firm a programami uruchamiającymi OEM. Na przykład niektóre urządzenia OEM migoczą, gdy użytkownik dotknie ekranu, zanim pojawi się animacja na ekranie głównym. Czasami zamiast wybranej aplikacji uruchamiającej innej firmy pojawia się aplikacja uruchamiająca system (zdarzyło mi się to kilka razy). Ulepszona animacja przejścia jest fajna, ale nikt nie chce zajmować się błędami ani w aplikacji uruchamiającej, ani na ekranie ostatnich aplikacji, więc zdjęcia kodu gestów wymagają oczyszczenia i/lub standaryzacji.
Dziękujemy Kevinowi Barry'emu i Peterowi Huberowi za pomoc przy tworzeniu tego artykułu!