Zestawienie nowości pierwszego poglądowego wydania Androida 11 skierowanego do deweloperów

Prawie miesiąc temu (19 luty) Google nieoczekiwanie wydało pierwszą deweloperską odsłonę Androida R / 11. Zmian pod maską pojawiło się sporo (nowe API i te sprawy), niektóre mniej, a inne bardziej wyczekiwane. Jeśli zaś chodzi o rzeczy widoczne gołym okiem, to większość z nich jest mocno kosmetyczna, przy czym nie zabrakło kilku dość kontrowersyjnych (przynajmniej dla pewnych użytkowników). Nie ulega jednak wątpliwości, że tegoroczna odsłona zielonego robocika będzie głównie ewolucją wcześniejszych rozwiązań i konsekwentnym zmierzaniem w stronę zwiększenia bezpieczeństwa danych użytkowników (o ile przy tej firmie to w ogóle możliwe).

Nim przejdziemy do konkretów, zapoznajmy się jeszcze z kilkoma niuansami. Po pierwsze, stabilna wersja trafi do użytkowników w 3 kwartale, choć nie podano dokładnej daty. Po drugie, poprzedzona będzie 3 poglądowymi odsłonami deweloperskimi (z czego jedną już wydano) oraz 3 betami. Po trzecie, w czerwcu rozpocznie się „stabilizacja platformy”, co zbiegnie się z udostępnieniem drugiej bety. No i najważniejsze, na chwilę obecną, dostęp do testów mają wyłącznie posiadacze urządzeń Google Pixel 4 / 4XL, Pixel 3a / 3a XL, Pixel 3 / 3 XL, and Pixel 2 / 2 XL – stosowne obrazy zamieszczono tutaj. Z czasem, a przynajmniej tak było przy Androidzie 10, do programu powinni dołączyć inni producenci.

Świeżutkie API i inne ciekawostki dla deweloperów

W opcjach deweloperskich pojawił się instalator Dynamicznych Aktualizacji Systemowych (Dynamic System Updates, czyli DSU), o którym więcej przeczytacie na XDA. Napomknę tylko, że ideą tego rozwiązania jest uruchomienie GSI bez wpływu na aktualnie zainstalowany systemem, co ma pomóc twórcom aplikacji – wiecie, redukcja kosztów poprzez dostęp do najnowszej wersji Androida bez wymiany urządzenia lub „zaorania” własnego.

Jeśli śledzicie na bieżąco nowinki techniczne, to na pewno nie umknęła Wam panująca „moda”, tj. zwiększanie odświeżania wyświetlaczy smartphonów. Google postanowiło pójść za ciosem i w ustawieniach deweloperskich umieściło przełącznik uruchamiający licznik wskazujący aktualną częstotliwość. Bo wiecie, większość implementacji wygląda tak, że maksymalny poziom nie utrzymuje się zawsze i wszędzie (oszczędzanie baterii i te sprawy).

Rozszerzono również Project Mainline o kolejne moduły, dzięki czemu więcej elementów systemu będzie w przyszłości uaktualnianych poprzez sklep Play.

Jeśli zaś chodzi stricte o API, to na pierwszy plan niewątpliwie wysuwa się obsługa 5G oraz masa funkcji odnoszących się do sieci / połączeń

  • Bandwidth Estimator API, wchodzący w skład zaktualizowanego ConnectivityManager’a, który, o ile modem to obsługuje, dostarczy dane dotyczące przepustowości pobierania i wysyłania. Wszystko to bez konieczności sondowania sieci lub obliczania przez deweloperów własnych prognoz. W razie braku wspomnianego wsparcia, ocena zostanie dokonana na podstawie istniejącego połączenia;
  • Dynamic Meteredness API zapewni twórcom informację, czy użytkownik korzysta z „niemierzonego połączenia” (chyba chodzi o nielimitowane, ale nie wiem, czy dobrze rozumiem kontekst), aby móc dostarczyć mu lepszej jakości dane. Bo wiecie, wyższa rozdzielczość pochłania więcej pakietu;
  • Usprawniono usługę kontroli połączeń, dając aplikacjom z tej grupy większe możliwości, co przekłada się na więcej „manualnej” kontroli ze strony użytkowników, np. oznaczanie połączeń jako spam czy dodanie dzwoniącego do kontaktów;
  • Udoskonalono Wi-Fi Suggestion API, dzięki czemu oprogramowanie zarządzające siecią zyska nowe zdolności, np. wymuszenie rozłączenia poprzez usunięcie sugestii, kontrola sieci typu Passpoint, otrzymywanie większej ilości danych dotyczących jakości sieci itd. Skoro już o Passpoint wspomniałem, to Android 11 m. in. poinformuje nas o zbliżającej się dacie końca ważności wykorzystywanego profilu.

Interfejs

Pojawiło się natywne wsparcie dla zakrzywionych na bokach wyświetlaczy (waterfall displays) oraz aparatu przedniego w formie „nieinwazyjnej” dziury w ekranie (hole-punch displays) – odpowiada za to Display Cutouts API.

Konwersacje

Tekst ten piszę „niechronologicznie”, więc już wiem, że niżej o tym wspomniałem – Google mocno pochyliło się nad tematem ogólnie pojętej konwersacji, dając deweloperom całkiem nowe narzędzia. Niżej wspomnianą, dedykowaną sekcję w centrum powiadomień, „zachętę” do zaimplementowania obsługi „bąbelków”, a także obsługę wklejania zdjęć wprost do okienka szybkiej odpowiedzi z powiadomienia (aktualnie jest to niemożliwe, by tego dokonać trzeba otworzyć aplikację). Ta ostatnia rzecz idealnie łączy się z niedawnymi zmianami w Google Chrome oraz Gboard.

Usprawnienia z zakresu kamery i zdjęć

Nie znam się na tym i ni cholery mnie to nie interesuje, więc nie będę się tutaj zbytnio rozwodził. Tak czy siak, ImageDecoder API pozwala teraz dekodować i renderować animacje sekwencji obrazów przechowywane w HEIF. Pojawił się natywny dekoder obrazu, co zmniejszy wielkość APK poprzez brak przymusu dostarczania zewnętrznych bibliotek. Dodano API o nazwie setCameraAudioRestriction(), wyłączające wszelkie dźwięki i wibracje podczas nagrywania, które mogą w istotny sposób wpłynąć na jakość nagrywanego obrazu – wiecie, wstrząsy i te sprawy. Zaimplementowano tryb niskiego opóźnienia dla HDMI oraz dekodowania wideo – bez wchodzenia w niezrozumiałe dla mnie szczegóły, głównie z myślą o Google Stadia. No i na koniec pozostaje już tylko wspomnieć o kilku usprawnieniach z zakresu trybu bokeh. Aplikacje mogą teraz używać tagów metadanych, aby włączyć go na wspieranych urządzeniach.

Na sam koniec tego akapitu wspomnę już tylko stricte informacyjnie, że zaktualizowano Neural Network API (do wersji 1.3), App Compatibility, Scoped Storage, BiometricPrompt API (dodając 3 nowe typy – weak, strong oraz device credential). No i wprowadzono niejakie BlobstoreManager API, odpowiadające za bezpieczną wymianę danych (konkretniej blobów, jakkolwiek się to tłumaczy) pomiędzy aplikacjami.

Nowości skierowane w stronę użytkowników

Na pierwszy ogień bierzemy opcję zaplanowanej aktywacji ciemnego trybu kolorystycznego. W zasadzie skopiowano ustawienia dotychczas dostępne dla „trybu czytania”, tj. wybierzemy spośród „od zachodu do wschodu słońca” lub „włącz o wybranej porze”.

Pamiętacie „bąbelki” (Bubbles API), których pierwszy, poglądowy debiut odbył się przy okazji testów Androida 10? Wtedy nie zdecydowano się na ich dołączanie do stabilnej odsłony, lecz wiele wskazuje na to, że tym razem sytuacja zostanie rozwiązana inaczej. Co za tym przemawia? Ano fakt, że aktualnie ich domyślnym stanem jest „włączone”. Warto również odnotować, że uproszczono robienie zrzutów tak uruchomionej konwersacji – wystarczy dłużej przytrzymać palec na „bąbelku”, a wyłoni się odpowiednia funkcja. Eliminuje to konieczność ręcznego przycinania zdjęcia do wielkości okna czatu.

Korzystacie z wielu komunikatorów? Ja na szczęście nie, lecz potrafię sobie wyobrazić, że przy większej ilości powiadomień z różnych aplikacji można się nieco pogubić. Dlatego też postanowiono jakoś temu zaradzić i od teraz wszystkie „konwersacje” zgrupowane są razem. Niesie to za sobą nieco przebudowane menu uruchamianie dłuższym przytrzymaniem palca, posiada ono m. in. włącznik „bąbelka” (o ile program to wspiera), możliwość stworzenia skrótu i przypięcia go do ekranu domowego, nadania wyciszania lub drzemki dla powiadomienia oraz przycisk oznaczający konwersację jako „bardzo ważną”.

Pośród szybkich ustawień (Quick Settings) wreszcie znajdziemy przełącznik do nagrywania ekranu. Niby prosta rzecz, a długo przyszło na nią czekać.

Nieco zreorganizowano panel zarządzania mechanizmem Nie Przeszkadzać (Do Not Disturb). Wyjątki rozdzielono na 3 podgrupy – ludzie, aplikacje oraz alarmy i inne „przeszkadzajki” (interruptions :P). Reszta pozostaje w zasadzie taka sama, z naprawdę drobnymi różnicami.

Nie do końca rozumiem sensu takowej decyzji, lecz zdublowano odnośnik do zarządzania systemową nawigacją – oprócz dotychczasowego miejsca znajdziemy go również w ułatwieniach dostępu.

Z racji coraz większego nacisku na bezprzewodową łączność, głównie w kontekście słuchawek, zmodyfikowano działanie trybu samolotowego. Od teraz, o ile jesteśmy połączeni z jakimś urządzeniem, nie ingeruje on w stan modułu bluetooth, co zniweluje irytującą konieczność ręcznego, ponownego uruchomienia.

Jeśli korzystacie z MIUI, choć podejrzewam, że nie tylko tam istnieje coś takiego, to na pewno kojarzycie podgląd pojawiający się zaraz po wykonaniu zrzutu ekranu, wraz z kilkoma szybkimi akcjami. Wiele wskazuje na to, tj. redaktorom XDA udało się dobrać do nowego interfejsu, że coś podobnego trafi do AOSP. Jednak póki co, opcja „rozszerzonego zrzutu” zwraca błąd „not implemented”.

W końcu przywrócono możliwość przypinania aplikacji w menu udostępniania, co z niewiadomego powodu usunięto w Androidzie 10.

Mocno przebudowano zarządzanie mechanizmem lupy, na pierwszy plan przenosząc włącznik skrótu odpowiedzialnego za powiększenie oraz zaawansowane ustawienia.

Pamiętacie, jak przy okazji rozwoju Androida 10 pisano o mechanizmie Quick Access Wallet? Jego obecność zmieniała nieco rozłożenie elementów w menu zasilania, aby móc wyświetlać tam karty podpięte pod Google Pay z możliwością zmiany tej aktualnie używanej. Wiecie, żeby podczas płatności szybko to zrobić, a nie przekopywać się przez ustawienia aplikacji. Wtedy całość ograniczona była do Pixel’i i Google Pay, lecz w Androidzie 11 to zmieniono. Wystarczy, że deweloper doda odpowiednie uprawnienie – android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE.

Manualną korektę czułości gestu cofania w końcu zdefiniujemy niezależnie dla obu krawędzi wyświetlacza, co, podobno, spędza sen z powiek wielu użytkowników.

Przy okazji czytania różnorakich informacji o Androidzie 11 dowiedziałem się, że system ten od 2012 (wersja 4.3 Jelly Bean) posiada mechanizm o nazwie Notification Log. Raczej nietrudno się domyślić co tam znajdziemy, jednak sęk w tym, że od tamtego czasu nie było to w żaden sposób rozwijane i generalnie nie da się do tego dostać na większości urządzeniach. Dopiero teraz zdecydowano się nieco zaktualizować jego interfejs i co ciekawe, Google poszło nawet o krok dalej i stworzyło nową kartę w ustawieniach (póki co jeszcze ukrytą, dobrać się można do niej poprzez Activity Launcher). Jest ona zdecydowanie przystępniejsza w odbiorze i całkowicie niezależna od poprzedniego rozwiązania. Jednak tajemnicę stanowi, czy i kiedy pojawi się w systemie, a także jakie są plany względem starego Notification Log.

Nie wiem jak inni, ale zawsze mam problem z ogarnięciem jaki kodek bluetooth wspierany jest poprzez wykorzystywane przeze mnie słuchawki. Momentami naprawdę ciężko znaleźć stosowną informację na ten temat, dlatego też firma przyszła nam z pomocą. W ustawieniach deweloperskich, gdzie znajdziemy opcje z tego zakresu, wszystkie nieobsługiwane kodeki będą szare i nieaktywne.

Wreszcie zaimplementowano, zapowiedziany na zeszłorocznym Google I/O, „sejf” na dane dotyczące posiadanego prawa jazdy i/lub paszportu. Co ciekawe, firma nie robi tego wyłącznie dla siebie, gdyż pracuje nad tym standardem wspólnie z ISO. Szczegóły nie są dla mnie zrozumiałe, zainteresowanych odsyłam na XDA.

Drobnym, acz przydatnym usprawnieniem jest wyświetlanie się problemów z prywatnym DNS już na głównej karcie ustawień Wi-Fi, podczas gdy dotychczas musieliśmy „wejść głębiej”.

Wiele wskazuje na to, że Google zamierza rozbudować menu zasilania w swoiste centrum kontroli dla inteligentnych urządzeń. Szczegóły jak zwykle znajdziecie na XDA, wraz z listą obsługiwanych urządzeń. Na razie nie ma się nad czym rozwodzić, całość działa bardzo średnio.

Co nieco otrzymało się domyślnemu menadżerowi pulpitu na smartphonach Google, tj. Pixel Launcher. Na ekranie ostatnich aplikacji, zamiast sugestii (istnieją przesłanki ku temu, że będą przeniesione na pulpit), pojawiły się trzy skróty – wybierz (nie wiadomo za co odpowiada), zrzut ekranu oraz udostępnij (robi zrzut ekranu i od razu otwiera menu udostępniania). Wspomniane wyżej sugestie pozostały jednak w szufladzie aplikacji, przy czym dano nam sposobność do ich minimalnej konfiguracji. Wystarczy przytrzymać palec na danej ikonie aby ujrzeć „nie sugeruj aplikacji”. Pojawiło się również coś mniej wyczekiwanego, a mianowicie automatyczne nazywanie nowo utworzonych folderów na podstawie wrzuconych weń programów.

Uprawnienia i bezpieczeństwo

Choć nie wiem jak to w rzeczywistości wygląda (w sensie realne zachowanie pod maską), to bardzo spodobało mi się wprowadzone w Androidzie 10 ograniczenie dla używania lokalizacji. Wcześniej było to tylko tak / nie dla poszczególnych programów, a od zeszłego roku (o ile posiadamy wspomnianą wersję) otrzymaliśmy jeszcze „wyłącznie podczas korzystania z aplikacji”. W teorii mocno ogranicza to zapędy niektórych ciekawskich deweloperów, ale Google najwyraźniej uważa, że to wciąż zbyt mało. W związku z tym, Android 11 idzie o krok dalej i odda nam opcję „pytaj za każdym razem” – dla wszystkich uprawnień, nie tylko lokalizacji. Dla większości użytkowników będzie to nieco irytujące na dłuższą metę, ale na pewno przypadnie do gustu osobom dbającym o swoją prywatność.

Pozostając w tym temacie, wspomnieć wypada o jeszcze jednym. Nowy robocik ukróci nękanie użytkowników monitami o uprawnienia i dwukrotne odmówienie (licznik niby resetuje się dopiero po odinstalowaniu i ponownym zainstalowaniu aplikacji, choć interesuje mnie kwestia wyczyszczenia jej danych, bo o tym nie wspomniano) traktowane będzie jako „nie pytaj ponownie”. Poza tym, użycie przycisku „wstecz” na takowym monicie nie zostanie odebrane jako „odmów”, chyba, że program skorzysta z requestPermissions() i przerzuci nas prosto do ustawień uprawnień.

Potencjalnie kontrowersje

Chyba największą burzę komentarzy wywołała „propozycja” przeniesienia kontrolek odtwarzacza z powiadomień wprost do panelu ze skrótami. Teoretycznie (również moim zdaniem) jest to dobra zmiana, gdyż w natłoku kart pochodzących z różnych aplikacji niejednokrotnie chwilę zajmuje ich znalezienie, ponieważ nie ma one żadnego priorytetu (a szkoda). Android 11 mógłby rozwiązać ten problem, z tym, że jego implementacja, a w zasadzie jej wizualny aspekt, pozostawia wiele do życzenia. Co tu dużo mówić, popatrzcie sami.

Kolejna testowana, choć ukryta przed użytkownikami, nowość tyczy się odseparowania szybkich ustawień od powiadomień. Zależnie od tego, po której stronie pociągniemy palcem, ujrzymy coś innego – z lewej karty z aplikacji, z prawej skróty. Coś podobnego oferuje wiele zmodyfikowanych wersji Androida i to od bardzo dawna, choć ja osobiście nigdy nie widziałem sensu takiego rozwiązania.

Kolejna dziwna, odkryta na XDA, rzecz, to kolorowe ikony szybkich ustawień. W SystemUI znaleziono klasę nazwaną QSColorController, odpowiadającą za nadpisywanie domyślnego ustawienia koloru, w tym jego definiowania dla każdego skrótu niezależnie. Póki co stworzyć można dowolną konfigurację, choć paletę mocno ograniczono – do zielonego, niebieskiego, czerwonego i żółtego. Efekt końcowy jest co najmniej dyskusyjny, no ale wiecie – każdemu wedle potrzeb.

Ta zmiana nie zostanie przez wszystkich zauważona, jednak osoby z „parciem na modyfikacje” raczej nie będą z niej zadowolone. Otóż Google wycięło (albo to błąd w tym wydaniu) z ADB komendę overscan, która umożliwiała ukrycie domyślnego paska nawigacyjnego, co dawało wolną rękę do skorzystania z innego.

Wyłącznie dla Google Pixel

4-generacja

Użytkownicy zauważyli pojawienie się przełącznika „zwiększ czułość dotyku”, opisanego jako „poprawienie dotyku podczas korzystania z ochrony ekranu” (w domyśle szkła hartowanego, ponieważ folie, czy inne hydrożele, są raczej cienkie).

Pochylono się również nieco nad tzw. Motion Sense i rozbudowano go o kontrolę odtwarzanych mediów, choć póki co jedynie na zasadzie wstrzymaj / wznów.

Prawdopodobnie wszystkie wspierane

Redaktorom XDA udało się dokopać do nowego systemu gestów, o nazwie kodowej Columbus. Jego działanie jest dość nietypowe, ponieważ podwójnym stuknięciem w plecki smartphonu wywołamy konkretną akcję. Póki co ich lista zawiera: zamknij minutnik, uruchom kamerę, uruchom Asystenta Google (prawdopodobnie domyślnie, a jakże), zatrzymaj / wznów multimedia, rozwiń pasek statusu, wycisz nadchodzące połączenie, odłóż alarm, odepnij powiadomienia, wykonaj „wybraną przez użytkownika akcję”. Co ciekawe, by zapobiec przypadkowemu wywołaniu zadbano o niejakie „bramy”, m. in. uruchomioną kamerę czy trwające ładowanie. No i na zakończenie dodam, że mechanizm ten nie wymaga żadnych konkretnych podzespołów, zadowoli się żyroskopem i akcelerometrem.

Być może zapowiedź funkcji Pixel’a 5

Jeden z redaktorów XDA dokopał się, poprzez znany nam Activity Launcher, do aktywności „com.google.android.settings.fuelgauge.batteryshare.BatteryShareTrampoline”. Jak się okazuje, odpowiada ona za ładowanie zwrotne, choć oczywiście żadne z obecnych urządzeń nie obsługuje tej funkcji. No i użycie „com.google” sugeruje, że mechanizm ten trafi na Pixele, a nie ogólnie do AOSP (tutaj korzysta się z com.android).

Podsumowanie

Zanim przejdziemy do podsumowania, zaczniemy od ciekawostki. Kilka ze wspomnianych wyżej opcji, w międzyczasie (a dokładniej 2 marca), trafiło już do użytkowników Pixel’i w ramach tzw. Feature Drop. Mowa m. in. o przypinaniu aplikacji w menu udostępniania, wstrzymywaniu i wznawianiu muzyki na 4 generacji tych urządzeń czy powiadomieniu o źle odłożonym na bezprzewodową ładowarkę telefonie.

Ponadto, 4 marca udostępniono wersję DP 1.1, czyli drobne, poprawkowe wydanie. Naprawiono kilka pomniejszych błędów, nowych funkcji nie odnaleziono.

No i dobra, przebrnęliśmy przez wszystko – ale czy było warto? Moim zdaniem owszem i bardzo cieszy mnie, że Android w wydaniu od Google coraz bardziej zbliża się do możliwości najpopularniejszych nakładek. Jasne, wciąż sporo brakuje, ale generalny kierunek jest jak najbardziej w porządku. Mi do gustu najbardziej przypadły bąbelki, w związku z czym mam nadzieję, że ich obsługa szybko pojawi się w MIUI.