Kompendium internetowej wiedzy dotyczące pierwszej testowej odsłony Androida Q

Trzynastego dnia bieżącego miesiąca, po kilkunastu tygodniach przecieków i spekulacji, udostępniono pierwszą testową odsłonę kolejnej dużej aktualizacji Androida – tym razem oznaczonej literą „Q”. Na chwilę obecną nie znamy ani jej numeru (teoretycznie 10), ani tym bardziej pełnej konsumenckiej nazwy. Co ciekawe, o ile przez pierwsze kilkadziesiąt godzin od publikacji internet pękał w szwach od natłoku informacji, to jednak obecnie jest zaskakująco cicho – a przynajmniej ja na żadne artykuły z tego zakresu nie trafiam.

Co dodatkowo zasmucające, polskich opracowań jest jak na lekarstwo, a większość z nich mocno po łebkach przeleciała przez temat. O ile mogę to zrozumieć w odniesieniu do popularnych w „naszym Internecie” blogów, o tyle nie ogarniam co robią najpoczytniejsze portale (no niby wiem, ale nie chce mi się nad tym pastwić…). Dlatego też postanowiłem wziąć sprawy we własne ręce i samemu to rozpracować. Zebrać wszystkie anglojęzyczne materiały, przeczytać, przetłumaczyć i zaprezentować.

Wpis ten będzie okrutnie długi, ale co zrobić – jak mus to mus. 

Ogólne informacje

Jeśli wierzyć słowom Dave’a Burke, piastującego stanowisko o tajemniczej dla mnie nazwie VP Engineering, w 2019 roku mobilne innowacje są „silniejsze” niż kiedykolwiek wcześniej – na czele z siecią 5G, ekranami rozciągającymi się na całym przednim panelu oraz zginanymi urządzeniami. Oczywiście Android jest w centrum tego wszystkiego, co zawdzięcza wszystkim partnerom instalującym go na swoich sprzętach. W związku z tym Android Q skupi się właśnie na tych rzeczach, przy okazji kładąc jeszcze większy nacisk na prywatność i ochronę danych.

Cały cykl rozwojowy tej odsłony planowo zawierać ma 6 wydań oznaczonych jako BETA, a to finalne powinno pojawić się w trzecim kwartale bieżącego roku:

  • Beta 1 (wydanie inicjujące, 13 marca);
  • Beta 2 (aktualizacja przyrostowa, początek kwietnia);
  • Beta 3 (aktualizacja przyrostowa, początek maja – prawdopodobnie w trakcie Google I/O);
  • Beta 4 (ostateczna wersja API oraz oficjalne SDK, możliwość publikowania aplikacji w sklepie Play, początek czerwca);
  • Beta 5 (testy pierwszego kandydata do wydania, trzeci kwartał);
  • Beta 6 (ostateczne testy kandydata do wydania, trzeci kwartał);
  • Publikacja do AOSP (trzeci kwartał).

Zgodnie z zapowiedziami Google, pierwsze testy dostępne są na wszystkich trzech generacjach smartphonów z serii Pixel. Jeśli posiadacie te urządzenia i jesteście zainteresowani tematem (to prawdopodobnie już dawno o wszystkim wiecie :P), to chęć dołączenia do nich możecie wyrazić tutaj. Dla osób wolących ręczną instalację (zmodyfikowana partycja system lub vendor) przygotowano obrazy systemu

Ciekawostki i rzeczy warte odnotowania

Rzeczy jawnie dostępne

Jednym z dziwnych i generalnie idiotycznych rozwiązań jest uwiecznianie wcięcia i zaokrągleń ekranu na zrzutach. Dotychczas, nawet posiadając te dwa „upośledzenia” wyświetlacza, otrzymywaliśmy grafiki przedstawiające „pełny obraz”, a obecnie otrzymujemy całkowitą żenadę. Sam nie posiadam (i raczej nieprędką będę) dostępu do Androida Q, więc podrzucę Wam zrzuty od Android Police. Co prawda pojawiają się głosy, jakoby miał to być zwyczajny błąd, no ale kto ich tam wie.

Zaimplementowano wsparcie dla nowego formatu plików zdjęć, który może być nośnikiem informacji dotyczących głębi, a stąd już niedaleka droga do tworzenia obrazów 3D. Nowe metadane mogłoby zostać użyte do nakładania rozmyć i takich tam bajerów. Google dąży do tego, by Dynamic Depth uczynić otwartym formatem, oczywiście podkreślając przy tym swoją współpracę z różnorakimi producentami.

Osoby z lepszą pamięcią zapewne kojarzą, że wraz z Androidem 8.0 Oreo zadebiutował mechanizm „drzemki” powiadomień, tj. wybieramy jej długość (15, 30 lub 60 minut), po czym powiadomienie znika i pojawia się ponownie po upływie wyznaczonego czasu. Jego wywołanie następowało po „lekkim przesunięciu” powiadomienia w lewo lub prawo – „mocne przesunięcie” oczywiście je usuwa. Obecnie wygląda to nieco inaczej, ponieważ ruch w prawo został na sztywno przypisany do kasowania, natomiast w lewo uruchamia opcje drzemki.

Każde nowe powiadomienie lądujące na liście wyświetli, zaraz obok nazwy źródłowej aplikacji, dzwoneczek. Ten oto drobny symbol (utrzymujący się zaledwie 30 sekund) pozwoli na szybkie „rozeznanie w terenie”, bo wiecie – Android sortuje powiadomienia zależnie od ich ważności i na tej podstawie również pokazuje lub nie pływające okienka. Nie otrzymuję niewyobrażalnych ilości powiadomień, więc nie jestem w stanie ocenić przydatności tego mechanizmu.

Kolejna drobnostka tyczy się ekranu blokady i wyświetlanej na nim okładki albumu podczas odtwarzania muzyki. Mechanizm ten zadebiutował wraz z Androidem 4.4 KitKat i aż do teraz pozostawał w niezmiennej formie. Jego uaktualniona wersja wyświetli nam jej tak mocno rozmytą wersję, że momentami ciężko rozpoznać oryginalne zdjęcie.

Ta nowość kiedyś powinna być mocno użyteczna, lecz na chwilę obecną traktuję ją jako ciekawostkę. Otóż do listy domyślnych aplikacji dodano Emergency app (informacje alarmowe) oraz Call screening app (filtrowanie połączeń), jednak póki co nie mamy żadnego wyboru. Prawdopodobnie zmieni się to wraz z możliwością publikowania programów obsługujących Androida Q, dzięki czemu trafią tam twory zewnętrznych deweloperów. Mówi się, że jest to część większej całości - niejakich ról.

Google z jakiegoś powodu zdecydowało się zrobić użytkowników w balona i dla systemowych aplikacji podmienić nazwę przycisku „wyłącz” na „odinstaluj”. Dlaczego? Po co? Pewnie by dać konsumentom iluzoryczną kontrolę nad preinstalowanym przez producentów crapware. Przy okazji lekko uaktualniono wygląd karty Informacje o aplikacji

Na koniec przejdźmy na szybko przez nowości przyjemne, acz nie dające się w żaden konkretny sposób opisać:

  • Usprawniono szybkość pokazywania się i responsywność menu udostępniania, jednocześnie delikatnie odświeżając jego wygląd;
  • Wysuwając górną belkę zauważymy, zaraz obok ikony baterii, przewidywany czas pracy na jednym ładowaniu – uczenie maszynowe, nasze nawyki i te sprawy;
  • Przeniesiono ikonę baterii z centralnego położenia do prawego górnego rogu – mowa tutaj o funkcji Always on Display;
  • Informacja zwrotna w postaci wibracji pojawia się po podpięciu ładowarki oraz w trakcie przesuwania kursora,
  • Filtrowanie ustawień powiadomień dla aplikacji – wyłączone, ostatnio używane, najczęściej używane;
  • Instalacja oprogramowania celującego w starszą wersję Androida wywoła dodatkowe okienko, w którym od razu odbierzemy zbędne uprawnienia;
  • Stworzono aplikację Android Beta Feedback, będącą czymś na wzór Feedback Hub z Windows 10;
  • Możliwość korzystania z funkcji „odcienie szarości” (mechanizm Wind Down) dla każdej aplikacji oddzielnie, a nie ogólnie dla całego systemu (póki co wyłącznie teoretycznie);
  • Informacje o odtwarzanym utworze wyświetlane na AoD (dotychczas jedynie ikona odtwarzacza);
  • Mechanizm Slices wychodzi poza asystenta i wyszukiwarkę Google;

  • Dodatkowe opcje interakcji z powiadomieniami po ich dłuższym przytrzymaniu;
  • Mechanizm freeform windows nie wymaga już do działania ADB;
  • „Poprawiono” ikonę kopii zapasowej – strzałka na niej obecna pokazuje teraz bardziej logiczny kierunek, tj. z dołu do góry (wysyłanie), a nie z góry do dołu (pobieranie);
  • Nawiązując do wspomnianych wcześniej ról wypada odnotować, że aplikacje przypisane do konkretnych rzeczy, tj. wyświetlanie witryn internetowych, obsługa SMS czy połączeń itp. będą miałby z tego tytułu pewne „przywileje” względem oprogramowania nie ustawionego jako domyślne w tym konkretnym zakresie;
  • Usprawnienie wydajności ART;
  • Jak wspomniałem na początku, pojawiły się pewne mechanizmy dedykowane urządzeniom wyposażonymi w wyginane ekranu (onPause i onResume);
  • Poprawa konfiguracji i połączenia z urządzeniami IoT;
  • Zaokrąglono karty w widoku ostatnich aplikacji (Pixel Launcher);
  • Kojarzycie Reply? Jej „inteligentne” funkcje, tj. podpowiadanie odpowiedzi (ale i akcji, choćby uruchomienie otrzymanego linku w przeglądarce) na otrzymywane wiadomości (wprost na powiadomieniu), zostały wszyte w Androida;
  • No i dochodząc do końca – całkowicie wycięto z systemu mechanizm Android Beam.

Rzeczy ukryte

Nie wiem czy tryb desktopowy traktować jako „ciekawostkę” czy „użyteczność”, więc jakbym w Waszym odczuciu nie trafił z wyborem akapitu, to przepraszam. W każdym razie, długo wyczekiwana funkcja wreszcie zawitała do „czystego” Androida – choć ukryta i, póki co, w mocno okrojonej formie. Przetestujemy ją zarówno poprzez emulator obecny w Android Studio (komenda adb shell am start -n "com.android.launcher3/com.android.launcher3.SecondaryDisplayLauncher"), jak i korzystając ze smartphonu z uruchomioną deweloperską opcją o nazwie „force desktop mode” (komenda adb shell am start -n "com.google.android.apps.nexuslauncher/com.android.launcher3.SecondaryDisplayLauncher"). Zerkając na wideo udostępnione przez XDA zauważymy, że na obecnym etapie rozwoju całość sprawia momentami niemałe problemy i w działaniu daleka jest od ideału. Stanowi jednak krok w dobrą stronę i mam nadzieję, że zostanie to rozwinięte, a nie porzucone.

Personalizacja

Rzeczy jawnie dostępne

Opcje deweloperskie niewątpliwie są interesującym miejscem, z poziomu którego otrzymujemy wgląd do wielu pozornie nieobecnych w systemie rzeczy. Tym razem umieszczono tam nowe opcje personalizacyjne, dotyczące koloru akcentu, czcionek oraz kształtu ikon. Póki co wybór nie jest zbyt ogromny, odpowiednio:

  • Domyślny dla urządzenia (w przypadku pikseli to niebieski), czarny, zielony, fioletowy;
  • Domyślny dla urządzenia (w przypadku pikseli to Google Sans / Roboto), Noto Serif / Source Sans Pro;
  • Domyślny dla urządzenia (w przypadku pikseli to okrągły), łza (teardrop), zaokrąglony kwadrat (squircle), zaokrąglony prostokąt (rounded rectangle).

Rzeczy ukryte

Nie jestem do końca przekonany czy ta funkcja pasuje do akapitu „personalizacja”, niemniej wspomnę o tym tutaj. Otóż Android Q, poniekąd, otrzymał pełną obsługę ciemnego motywu. Dlaczego „poniekąd”? Wszystko przez to, że stosowny przełącznik został ukryty, choć w Androidzie Pie był obecny w opcjach deweloperskich. Na szczęście użytkownicy XDA sobie z tym poradzili i procedura jego przywrócenia nie jest jakoś wybitnie trudna. Wystarczy uruchomić debugowanie USB na smartphonie oraz narzędzie ADB na komputerze, a następnie wklepać komendę adb shell settings put secure ui_night_mode 2 lub z parametrem „1” by przywrócić domyślne ustawienie. Potem pozostaje już tylko restart urządzenia i cieszenie się ciemnym motywem dostępnym dla całego systemu.

Wszystko wskazuje na to, że opcje personalizacyjne zostaną bardzo mocno rozwinięte w nadchodzącym Androidzie. Nawet coś tak prozaicznego jak zmiana kształtu zegara na ekranie blokady. Jak przedstawia się to obecnie raczej nie trzeba pisać – prosto i czytelnie. Jak będzie wyglądać? Bardziej zmyślnie, choć póki co nie zostało to do końca dopracowane – poprzez modyfikację pozbawiamy się podglądu na kalendarz i pogodę.

Tak więc dzięki ADB ustawimy zegar tekstowy, analogowy, „bąbelkowy” (jak dla mnie najmniej czytelny), a w razie potrzeby wrócimy do domyślnego – odpowiednio:

  • adb shell settings put secure lock_screen_custom_clock_face "com.android.keyguard.clock.TypeClockController"
  • adb shell settings put secure lock_screen_custom_clock_face "com.android.keyguard.clock.StretchAnalogClockController"
  • adb shell settings put secure lock_screen_custom_clock_face "com.android.keyguard.clock.BubbleClockController"
  • adb shell settings delete secure lock_screen_custom_clock_face

Usprawnienia z zakresu prywatności

Nie wiem czy dla wszystkich jest to równie ważne, ale w końcu wyeliminowano niczym nieskrępowany dostęp do systemowego schowka. Jedyny wyjątek stanowią „aplikacje-klawiatury” (generalnie wszystko co mieści się w ramach IME), cała reszta musi obejść się smakiem – szczególnie ucierpią na tym zewnętrzne menadżery. Zaleta takiego rozwoju sytuacji jest oczywista, tj. aplikacje działające w tle nie będą w stanie (przynajmniej takie są założenia) przechwycić skopiowanego hasła lub kodu jednorazowego służącego do autoryzacji transakcji.

Będziemy mogli zdefiniować, by programy wykorzystujące moduły (GPS, aparat itp.) miały do nich dostęp wyłącznie w trakcie korzystania z nich, a nie cały czas – czy są uruchomione, czy tylko działają w tle. Powinno wykluczyć to wszelkie nadużycia, nagrywanie bez zgody i takie tam.

Różnorakie użyteczności

Rzeczy jawnie dostępne

W Androidzie Pie zaimplementowano maszynowe uczenie, którego celem było wzniesienie doznań płynących z użytkowania tegoż systemu na całkowicie nowy poziom – głównie poprzez automatyzację pewnych czynności. Do tej pory nie wycofano się z tego, a wręcz przeciwnie – postanowiono pójść o krok dalej. W kolejnej odsłonie robocika pojawi się nowy warunek uruchamiający oszczędzania baterii – patrząc na powyższe informacje nie trudno się domyślić, że będzie to „samouczący się automat”. Obecnie panującą normą są zdefiniowane na sztywno procenty, po których otrzymamy stosowny komunikat przypominający o uruchomieniu tego mechanizmu. W przyszłości wszystko zależeć będzie od naszego codziennego zachowania, a nie predefiniowanej reguły. Jestem bardzo ciekawy jak sprawdzi się to w praktyce.

W kontekście powiadomień wypada wspomnieć o możliwości zdefiniowania czasu ich wyświetlania i nie tyczy się to wyłącznie pływających powiadomień aplikacji. Przykładowo, wraz z nową wersją aplikacji Pixel Launcher (kolejna ciekawostka) dodano „wyskakujący” komunikat, dzięki któremu przywrócimy pozycję usuniętą z widoku ostatnich aplikacji lub ikonę z ekranu domowego.

Za czas wyświetlania tego typu rzeczy również odpowiada to ustawienie. Na koniec zaznaczę jeszcze, że opisywane opcje znajdziemy w ułatwieniach dostępu - w ich opisie dodatkowo pokreślono, iż aplikacje same w sobie muszą to wspierać.

Jedną z ciekawszych, przynajmniej moim zdaniem, opcji MIUI jest możliwość dzielenia się hasłem do Wi-Fi poprzez zeskanowanie kodu QR. Proste, skuteczne i nie wymaga zdradzania zdefiniowanej kombinacji cyfr i liter. Identyczna opcja wreszcie trafia do AOSP – niby żaden must-have, a nawet nic często wykorzystywanego, ale lepiej mieć niż nie mieć. Jeśli komuś się to nie spodoba, to wystarczy przełączyć jedną z systemowych flag.

Należę do tych osób, które korzystają z domyślnych rozwiązań gdzie tylko się da. Głównie przez to, że znacznie lepiej komponują się z systemem niż zewnętrzne rozwiązania i zazwyczaj (szkoda, że nie zawsze) są dla mnie wystarczająco rozbudowane. Dlatego cieszy mnie fakt uaktualnienia domyślnego menadżera plików, który jeszcze na Androidzie 9 wygląda okropnie. Material Design 2 jednak robi swoje – co tu więcej pisać, zerknijcie na zrzuty. 

Rzeczy ukryte

Jednym z braków „czystego” Androida jest brak systemowego rozwiązania odpowiadającego za nagrywanie ekranu. Do tej pory trzeba było posiłkować się zewnętrznymi rozwiązaniami, co ma swoje plusy, jak i minusy. Jeszcze w tym roku ulegnie to zmianie i do Androida Q zawita stosowne narzędzie. Póki co ukryte jest ono we flagach, których debiut odbył się wraz z dziewiątą odsłoną robocika. Pomijając fakt, że nie u wszystkich w ogóle ono działa (nie wiadomo tak naprawdę dlaczego, wygląda na całkowicie losową sprawę), to jego uruchomienie jest co najmniej dziwaczne. By tego dokonać należy wywołać menu zasilania (poprzez przycisk zasilania), a następnie wcisnąć i przytrzymać skrót odpowiadający za zrzut ekranu – trochę mało intuicyjne.

Idąc dalej, w Androidzie Q ukryto przydatne (tak uważam) usprawnienie w zakresie interakcji z powiadomieniami. Wiadomo jak jest obecnie – by się do nich dostać musimy ściągnąć górną belkę, co przy coraz dłuższych ekranach staje się coraz trudniejsze. Ciężko powiedzieć jak to będzie wyglądać w finalnej wersji, lecz korzystając z ADB sprawdzimy aktualną odsłonę. Mowa tutaj o czymś na wzór dymków czatu znanych z Messengera, dzięki którym powiadomienia możemy mieć zawsze pod ręką. By uruchomić ten mechanizm należy wpisać adb shell settings put secure experiment_enable_bubbles 1 oraz adb shell settings put secure experiment_autobubble_all 1. Oczywiście nic nie stoi na przeszkodzie by odwrócić ten proces, wystarczy skorzystać z adb shell settings delete secure experiment_enable_bubbles oraz adb shell settings delete secure experiment_autobubble_all.

Warto nieco pochylić się nad tematem tu i tam przytaczanych „flag”, gdyż pierwsza testowa odsłona zawiera ich naprawdę sporo. Za ich pomocą przysuniemy menu zasilania do dolnej krawędzi (normalnie jest na poziomie przycisku zasilania), uzyskamy losowanie innego adresu MAC za każdym razem gdy połączymy się z nową siecią i wiele więcej – polecam zerknąć na poniższą grafikę. 

Nowe API

Tutaj nie będę się zbytnio rozpisywać, bo nie mam do tego wystarczającej wiedzy. Tak więc:

  • Neural Network API 1.2 – 60 nowych operacji oraz chęć uczynienia tej wersji częścią frameworku TensorFlow;
  • MediaCodeInfo API – aplikacje dostarczające wideo mają lepiej dopasowywać dostarczaną treść do możliwości naszego urządzenia. Dokładniejsza identyfikacja wielkości ekranu i jego proporcji, wspieranego odświeżania czy obsługiwanych kodeków;
  • Native MIDI API – bezpośrednia „rozmowa” z urządzeniami MIDI zmniejszy opóźnienia i zwiększy wydajność;
  • Nacisk na korzystanie z publicznie dostępnych API (Android Q i nowsze) oraz wymuszenie na deweloperach celowanie w najnowsze API.