Technologické črty

Verzia z roku 2023. Technologické črty môžu byť aktualizované v priebehu semestra.

Nutné požiadavky

  • Projekt kompilujte voči API level 33 (Android 13)
  • Minimálna podporovaná verzia je API level 26 (Android 8.0). Po dohode môžete dať aj neskoršiu verziu.
  • Pri použití cudzieho kódu alebo externej knižnice uveďte odkaz na autora alebo pôvodinu. Črty využívajúce plagiarizovaný kód budú zamietnuté.
  • Technologické črty a funkcionalita musia viesť ku konzistentnej a logicky organizovanej aplikácii. Funkcionalita implementovaná bez ohľadu na zmysluplnosť v kontexte aplikácie nebude ocenená bodmi.

Odporúčaný dizajn

  • Používajte ViewModel-y ako poskytovateľa dát pre widgety. Zároveň vám uľahčia ukladanie perzistentné stavu, i stavu, ktorý vie prežiť zničenie a obnovenie aktivity.
  • Používajte RecyclerView, vždy keď ide o zoznamy či mriežky s dynamickými dátami; s dátami, ktorých je mnoho; či dátami, ktoré potrebujú zložitejšie vykresľovanie než len jeden reťazec.
  • Na databázu používajte Room.
  • Na REST API používajte Retrofit.
  • Ak je to možné, používajte fragmenty namiesto aktivít. Fragmenty sa dajú použiť v navigácii cez NavHost.
  • Používateľské nastavenia a drobné dáta ukladajte do SharedPreferences, obsiahle štruktúrované dáta do Room,

Zoznam technologických čŕt

Compose

Compose je aktuálna technológia, ktorej sme sa veľmi nevenovali. Za vyskúšanie tejto technológie môžete získať max. 3 body (jedna aktivita/fragment). Ak bude celá aplikácia v Compose, môžete získať max. 5 bodov (podľa rozsahu použitia).

Odporúčam pozrieť Scaffold

Aktivity a Fragmenty

Hodnotenie: 1 bod za každú aktivitu spĺňajúcu požiadavky. Maximálny počet hodnotených aktivít je 5.

Aktivita musí byť logická, zapadajúca do idey aplikácie, netriviálna (pozostávajúca z viacerých komplexných widgetov) a unikátna (identické aktivity s minimálnymi odlišnosťami nie sú brané do úvahy). Nesplnenie tejto podmienky má za následok neuznanie projektu.

Každá aktivita musí mať korektne implementovaný životný cyklus, korektne ukladať priebežný stav a musí byť schopná vysporiadať sa so zmenou konfigurácie (otočenie zariadenia). Ak aktivita poskytuje len zoznam akcií (napríklad tlačidiel), nepovažuje sa za netriviálnu. Pre navigáciu v aplikácii slúži widget Bottom Navigation. Ak tlačidlá reprezentujú akcie, využite lištu aplikácie (app bar).

Okrem aktivít je možné nechať si ohodnotiť aj fragmenty. Fragment musí byť logický, zapadať do idey aplikácie, spĺňať požiadavku netriviálnosti a unikátnosti. Zároveň musí podporovať korektné zmeny životného cyklu. Zároveň je potrebné obhájiť aj príslušný kód v aktivite (táto aktivita už nemôže byť hodnotená samostatne).

Pri obhajobe je možné kombinovať aktivity a fragmenty. Celkový limit je 5 bodov. Očakáva sa zdôvodnenie prečo sa využili fragmenty, resp. prečo je aktivita bez fragmentov.

SQL

  • Využitie relačnej databázy pomocou knižnice Room (3 body). Je zakázané volať databázové metódy v hlavnom vlákne.
  • Použitie viacerých tabuliek s prepojením entít 1:1, 1:M, či M:N: dodatočný 1 bod

Komunikácia pomocou HTTP / REST

  • Využitie knižnice pre HTTP (Retrofit, OkHttp): 1 bod, v prípade obojsmernej komunikácie dodatočný bod.

Sieťová komunikácia sa nesmie vykonávať v hlavnom vlákne. Črta musí konzistentne podporovať asynchrónne volania.

Zoznamy, mriežky, tabuľky

  • Využitie zoznamu, mriežky a podobného widgetu cez RecyclerView: 1 bod za každý widget.
  • Použitie správania pre zoznamy: 1 bod za každé správanie
    • swipe-to-refresh
    • swipe jednotlivých položiek
    • hromadný výber

ViewModel a LiveData

Použitie ViewModel, resp. LiveData v aktivitách či fragmentoch: 1 bod.

Navigácia cez NavHost

  • Navigácia medzi fragmentami cez NavHost: 1 bod 2 body

Služby / Services

  • Služba založená na Service: 1 bod.
  • Služba založená na plánovaní úloh napr. cez JobScheduler alebo WorkManager: 2 body
  • Služba využívajúca Bindery: plus 1 bod.

Senzory

Využitie niektorého senzora (GPS, krokomer): 1 bod za každý senzor.

Preferencie / Preferences

  • Využitie preferencií na ukladanie key-value dát: 1 bod.
  • Definícia preferenčnej aktivity: 1 bod.

Korutiny

Korektné použitie korutín: 1 bod.

Zdieľanie / Sharing

Odosielanie či prijímanie dát do iných aplikácií: 1 bod za odosielanie, 1 bod za prijímanie.

WebView

Zobrazenie webovej stránky vo WebView: 1 bod

Ďalšie črty hodnotené 1 bodom

  • fotoaparát/videokamera: 2 body
  • dialóg
  • notifikácie
  • viewbinding alebo databinding
  • navigácia cez BottomNavigationView
  • karty (tabs)
  • swiping view
  • využitie netradičného komponentu z knižnice Androidu, či z externej knižnice
  • vlastný štýl aplikácie
  • vlastná modifikácia app baru: obohatenie app baru o vlastné komponenty: vyhľadávanie, špeciálne tlačidlá (Bežné položky App Baru reprezentované ako tlačidlá nie sú ohodnotené).
  • zobrazovanie fotografií pomocou CameraX
  • google mapa (prípadne FusedLocationProvider)
  • použitie Dagger/Hilt-  1 bod

Prekvapte ma!

  • akákoľvek netradičná črta sa hodnotí: 1 bod
  • mimoriadne elegantne navrhnuté appky či „wow“ funkcionality: 1 bod

Metačrty

  • zverejnenie aplikácie na Google Play: 2 body.
  • zverejnenie zdrojových kódov na GitHub, GitLab, BitBucket či inom verejnom úložisku zdrojových kódov: 1 bod.
  • využitie externej knižnice v projekte, ktorá nebola ukázaná na cvičení: 1 bod, ak už knižnica nebola explicitne spomenutá v predošlých črtách
  • podpora veľkých displejov (tabletov): appka, ktorá korektne podporuje malé i veľké zariadenia: 1 bod.
  • kompletná lokalizácia aplikácie s využitím resources. Aplikácia nech je dostupná v dvoch ľubovoľných jazykoch/nárečiach: 1 bod.