Dodatkowe funkcjonalności Androida, których nikt nie wspiera

Paweł Dedio Programowanie 2018-12-29

Witajcie w kolejnym odcinku. Dzisiaj poruszę temat, o który prosiliście w komentarzach pod wcześniejszymi artykułami. Tytuł jest trochę clickbaitowy, jednak sami przyznacie, że brzmi lepiej niż: Dodatkowe funkcjonalności Androida, które wspierają tylko wybrane firmy, posiadające większy budżet lub czerpiące korzyści z tych funkcjonalności. Przy okazji tego długiego tytułu streściłem wam powód, dlaczego niektóre funkcjonalności nie są powszechnie wspierane. Jeśli jednak chcecie dowiedzieć się więcej — zapraszam do przeczytania całości.

Jak wygląda proces tworzenia aplikacji?

Na wstępie muszę opowiedzieć, jak wygląda cała otoczka związana z tworzeniem aplikacji w firmach. Powstawanie aplikacji mógłbym porównać do budowy domu. Zanim pracownicy budowlani rozpoczną pracę, muszą zapoznać się z całą dokumentacją domu — planami, zastosowanymi materiałami i tak dalej. Nie ma tutaj miejsca na samowolkę, każda zmiana musi zostać potwierdzona przez kierownika budowy, a niektóre zmiany wymagają nawet przerobienia planów domu przez biuro projektowe. Również żadna firma nie zrobi nic poza tym, za co zapłaci klient. Nie wyobrażam sobie sytuacji, w której jakaś firma zrobi przed domem podjazd z kostki brukowej bez potwierdzenia i sfinansowania takiej potrzeby przez klienta.

No dobrze, ale gdzie tutaj podobieństwa do programowania? Wbrew pozorom jest ich sporo. Zanim rozpoczniemy projekt, musimy się zapoznać z dokumentacją. Na tym etapie dobieramy również odpowiednią architekturę, frameworki i tak dalej. Podobnie jak w przypadku budowy domu, tutaj też nikt nie zrobi nic poza to, co wymaga klient. Jest to spowodowane kwestią finansową — godzina praca programisty jest bardzo kosztowna i nikt nie będzie niczego sponsorował bez powodu. Również wszystkie zmiany muszą zostać przedyskutowane i potwierdzone przez klienta. Każdy bardzo dokładnie pilnuje swojego budżetu i nie ma tutaj miejsca na żadne odstępstwa. Jak tak sobie myślę, to jest jeszcze jedno podobieństwo — również w programowaniu zdarzają się czarne owce z takim podejściem jak na powyższym memie.

Dlaczego klienci nie chcą nowych funkcjonalności?

Wyżej powiedzieliśmy sobie, że każda zmiana musi zostać zaakceptowana przez klienta. W każdej firmie, w której pracowałem, uświadamialiśmy klientów o różnych ciekawych funkcjonalnościach, mogących poprawić odbiór aplikacji przez użytkowników. Dlaczego więc klienci są niechętni do dodatkowych funkcjonalności? Pewnie nie będzie niespodzianką, że chodzi o… pieniądze. Klienci patrzą na to wszystko bardzo praktycznie, inwestują ogromne fundusze w aplikację i oczekują zwrotu z tej inwestycji. Dlatego ciężko im przekazać, w jaki sposób przykładowo zaimplementowanie funkcji Aplikacji błyskawicznej (instant app) może wpłynąć na powiększenie zysków. Mam nadzieję, że udało mi się Was wprowadzić w całą otoczkę związaną z tworzeniem aplikacji, więc teraz możemy przejść do konkretnych funkcjonalności.

Aplikacja błyskawiczna (instant app)

Tutaj chciałbym zaznaczyć, że ten termin to nie jest moje wesołe tłumaczenie, lecz oficjalna nazwa używana przez Google. Pewnie większość z Was wie, co to jest, ale dla pewności przypomnę. Dzięki tej funkcji możemy uruchomić jakąś funkcję aplikacji, bez potrzeby instalacji. Możecie to przetestować, uruchamiając jakikolwiek film w portalu Vimeo.com (musicie korzystać z co najmniej Androida 6.0 Marshmallow).

No dobrze, ale w czym jest problem? Funkcjonalność ta nie jest jakaś bardzo trudna do implementacji, o ile bierze się ją pod uwagę od samego początku tworzenia aplikacji. Jeśli zaczniemy ją implementować już pod koniec, to pojawia się kilka problemów. Przede wszystkim Instant app wymusza pisanie aplikacji w sposób, który nie jest jakoś bardzo popularny. Mianowicie każdą funkcjonalność musimy wydzielać do osobnego modułu, bo tylko wtedy ta funkcjonalność będzie mogła występować jako instant app. Kolejnym dość dotkliwym ograniczeniem jest limit wielkości pliku apk — wynosi on zaledwie 4 MB (na szczęście Google planuje podniesienie limitu do 10 MB). Co prawda limit ten nie dotyczy całej aplikacji, lecz tylko jednej funkcjonalności, ale i tak jest to dość problematyczne. Na szczęście pojawiło się sporo badań wykazujących korzystny wpływ tej funkcji na liczbę użytkowników aplikacji. Dzięki temu już teraz możemy zobaczyć, że coraz więcej firm decyduje się na implementację tej funkcjonalności. W przyszłości na pewno zachęci ich też podniesiony limit wielkości pliku apk.

Multi-Window

Funkcjonalność ta została zaprezentowana w Androidzie 7.0 Nougat. W przeciwieństwie do Instant App jest ona obsługiwana przez większość aplikacji i jest nawet włączona domyślnie. Jednak jest to obsługa na bardzo podstawowym poziomie, czyli możemy sobie jedynie powiększać i zmniejszać okienko z aplikacją. Czasami możemy zobaczyć, że interfejs w ogóle nie został przygotowany na taką sytuację i przy bardzo małym okienku, wszystko zaczyna się rozjeżdżać. Dodatkowo Android oferuje obsługę przenoszenia różnych elementów bezpośrednio z jednej aplikacji do drugiej, ale niestety mało która aplikacja to wspiera. Jest to jedna z tych funkcjonalności, która nie przekłada się bezpośrednio na zyski, więc ciężko namówić klienta na zainwestowanie czasu w usprawnienie obsługi multi-window.

Picture in picture

Jest to rozszerzenie funkcji Multi-Window, ale w przeciwieństwie do niej, nie jest domyślnie włączona. No dobrze, ale co to tak właściwie jest? Pewnie wielokrotnie zauważyłeś, że po wyjściu z nawigacji Google (nawigacja musi być w trakcie prowadzenia) na ekranie pojawia się małe okienko z miniaturową mapą. To jest właśnie tryb picture in picture. Całość wygląda dość prosto, więc dlaczego tak mało aplikacji udostępnia tę funkcjonalność? Tutaj znowu chodzi o czas potrzebny do obsługi trybu PiP. Okienko z aplikacją jest bardzo małe i nie możemy po prostu zostawić aplikację w takim samym stanie, w jakim jest normalnie. Aby wszystko wyglądało ładnie, musimy dostosować interfejs specjalnie pod ten tryb. Dodatkowo nie każdy rodzaj aplikacji nadaje się do otworzenia w trybie PiP. Przykładowo jakie zastosowanie mogłaby mieć ta funkcjonalność w aplikacji do kupowania biletów? To rozwiązanie zostało stworzone głównie z myślą o aplikacjach do rozmów, odtwarzających filmy i tak dalej.

Obracanie ekranu

O tej funkcjonalności pisałem już trochę w odcinku o tworzeniu interfejsu użytkownika. Pewnie zauważyliście, że mało jest programów, które wspierają obracanie ekranu, mimo że ta funkcjonalność jest domyślnie włączona podczas tworzenia nowego projektu aplikacji. Tutaj główną trudność sprawiają dwie rzeczy: po pierwsze musimy dostosować interfejs do poziomego trybu, a po drugie musimy być gotowi, że w każdym momencie nasza aplikacja zostanie zrestartowana. Oczywiście nie jest to coś niewykonalnego i wbrew pozorom jest to nawet proste. Jednak użyteczność tego trybu w zwykłych aplikacjach nie jest zbyt wysoka, więc klienci wolą spożytkować zasoby na jakieś bardziej widoczne funkcjonalności. Oczywiście dużo zależy od przeznaczenia aplikacji, bo przykładowo nikt nie wyobraża sobie odtwarzacza filmów nieobsługującego rotacji ekranu.

App shortcuts

Moim zdaniem jedna z ciekawszych funkcjonalności, niestety również pomijana. Sam staram się zachęcać klientów do rozważenia tej funkcjonalności, ale ciężko wskazać im czysto biznesową korzyść z takiego rozwiązania. No dobrze, ale co to właściwie jest? Są to specjalne skróty, widoczne po przytrzymaniu ikonki aplikacji. Jak w większości takich nowości, na pewno znajdziemy je w aplikacjach od Google — przykładowo w Chrome mamy do wyboru dwie skróty: Nowa karta oraz Karta incognito. To nie wszystko, aplikacja może również tworzyć dynamiczne skróty. Na przykład aplikacja bankowa może stworzyć skrót, który przeniesie Cię od razu do historii jednego z Twoich rachunków. Co więcej, w niektórych launcherach taki dynamiczny skrót możemy wyodrębnić jako osobną ikonę aplikacji.

Pewnie sobie teraz myślisz, gdzie jest haczyk, który powoduje, że tak mało aplikacji to wspiera. Już śpieszę z wytłumaczeniem. Mianowicie nie jest to wspierane domyślnie i obsługa tej funkcjonalności wiąże się z napisaniem dodatkowego kodu. Ponadto powszechne podejścia do programowania, polegające na używaniu tylko jednej aktywności, a wewnątrz niej fragmentów, lekko komplikuje przejście bezpośrednio do któregoś z ekranów z pominięciem poprzednich.

Asystent Google

asystent google

Asystent Google wielkimi krokami zbliża się do obsługi języka polskiego, lecz nieco mniejszymi krokami wchodzi do różnych aplikacji. Pewnie gdzieś obiło wam się o uszy, że Asystent Google może być integrowany do różnych aplikacji. Przykładowo, zamiast otwierać aplikację do kupowania biletów, mógłbyś porozmawiać z asystentem i on zrobiłby to za ciebie. Tutaj problemem nie jest brak perspektywy zysku, bo jednak można to traktować jako rozszerzenie kanałów sprzedaży. Głównymi problemami są oczywiście czasochłonność oraz integracja z systemami Google. Jeśli na etapie projektowania nikt nie zakładał autoryzacji poprzez serwery Google, może to być nieco problematyczne w późniejszym etapie. Jednak myślę, że wraz z wejściem Asystenta na nowe rynki, powiększy się lista obsługujących go usług.

Dzięki za dzisiaj! Zdaję sobie sprawę, że nie opisałem tutaj wszystkich takich funkcjonalności. Dlatego zachęcam Was do zgłaszania swoich propozycji w komentarzach. Widzimy się już za tydzień, gdzie opowiem co nieco o procesie kompilacji aplikacji. Do zobaczenia!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie do kariery programisty — zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów — być może to właśnie tam znajdziesz swoją pierwszą pracę.

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć, jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?
  11. Początki programowania — jaką technologię wybrać?
  12. Cykl życia aplikacji na Androida — co to takiego?
  13. Jak tworzymy interfejs użytkownika w aplikacjach na Androida?
  14. Jak system Android oszczędza energię?
  15. Jak działają i czym są powiadomienia push w Androidzie?
  16. W jaki sposób aplikacje pobierają dane z zewnętrznych serwisów i czym jest API?
  17. Jak działają pozwolenia w systemie Android?
  18. Śledzenie użytkowników — co wiedzą o nas aplikacje?
  19. Dlaczego aplikacje na Androida zajmują coraz więcej miejsca?
  20. Frameworki crossplatform – jak stworzyć aplikację na iOS i Androida jednocześnie?
  21. Jak obsłużyć kilka języków w aplikacji na Androida?


  • Martina Neumayer

    Wszystko okay, byle nie asystenty i podobne. Nie.. tego to ja nie chcę. I w sumie nie potrzebuję kompletnie. Cała reszta owszem, może być i się chwilami mocno przydaje.

  • Paweł Dedio

    Dziękuję za wszystkie komentarze. Cieszę się, że podobają się wam moje artykuły. Na pewno będzie ich jeszcze sporo 😉

  • Jacek

    Bardzo duży plus dla autora! Nie dość, że tekst bardzo merytoryczny, to napisany z polotem. Brawo!

  • s90

    Długi konkretny artykuł, nie to co pozostała część ekipy, aby tylko nabić tygodniowe staty. Dzięki 🙂 aż miło się czyta

  • Flaqs

    Powiem tak: gdy przychodzi weekend, szukam artykułów tylko jednego autora! 🙂 I jak co tydzień można na Niego liczyć! Świetna robota!

  • Mateusz Mati

    Jak zwykle napisane ze zrozumieniem i w sposób przyjemny dla czytelnika. Wielkie podziękowania dla autora za włożoną prace. Jak sam zauważyłeś, tryb PiP ma zastosowanie w rozmowach, nawigacji i w filmach, osobiście nie widzę, a może mi nie potrzeba nic więcej. Okienko ma służyć do podglądu, do czegoś więcej jest multi window. Może z podobnego założenia wychodzą producenci?

    • Paweł Dedio

      Zgadzam się, tak jak napisałem, żeby klient zgodził się na jakąś funkcjonalność, musi mieć pewność, że przełoży się to na zyski. Ciężko więc spodziewać się obsługi PiP w aplikacjach, w których używałby go jedynie mały procent użytkowników.

  • k3rnel-pan1c

    Asystenta to ja rozumiem, bo dostali go tylko niektórzy w Polsce. Potrzeba czasu, aby ktoś chciał jakiejś implementacji tego. PiP rzadko się wykorzystuje podobnie jak multiwindow (to przez taki a nie inny rynek tabletowy). Natomiast obracanie ekranu wykorzystuje się bardzo rzadko (głównie do obejrzenia filmu) a większość polskich aplikacji, które posiada ma app shortcuts.

    • Mateusz Mati

      jeżeli rzadko korzystasz z komunikatorów i wideorozmów to tak. Ja natomiast bardzo dużo czasu spędzam przy rozmowach z bliskimi na wchatsupie – i PiP jest tu zbawieniem. w kazdej chwili mogę czy coś sprawdzić, kupić bilet czy zrobić przelew. po prostu wszystko mogę robić w trakcie rozmowy w której widzimy się razem z rozmówcą. Nawet podczas nudnej rozmowy jestem w stanie odpalić jakaś gierkę by uprzyjemnić sobię rozmowę.

      • k3rnel-pan1c

        Ja akurat korzystam z wideorozmów, ale jak jestem w domu. Używam wtedy komputera 🙂

  • Tomasz

    Programy wymuszajace pionowe trzymanie tabletu sa tak wkurzajace, ze zaraz je wyinstalowuje.

  • sirrah777

    W żadnej aplikacji Facebooka nie ma Multi-Window co jest niesamowicie irytujące.

    • Paweł Dedio

      To była na bank świadoma decyzja, ponieważ ten tryb jest domyślnie włączony w każdej aplikacji. Tym bardziej jest to dziwne, bo Facebook to duża firma i mogłaby sobie pozwolić na obsługę tego, tym bardziej że nie jest to jakoś bardzo wymagająca funkcjonalność.

      • sirrah777

        Jaka by nie była, sprawiła że skasowałem aplikację i zaglądam na ten portal przez przeglądarkę.