Přednášky (které vede Michal Krumnikl) a další pomocné materiály naleznete na: http://tamz2.mrl.cz/

Cvičení

Během semestru budou na cvičeních zadávány úkoly, které budou hodnoceny na cvičeních).
Za body z těchto úkolů bude možné získat zápočet (max. 45; min. 23).

  1. Android Studio, instalace zalozeni projektu, emulator
  2. Ukazka aktivit, zakladni gui prvky, zasilani zprav mezi aktivitami
  3. Složený úrok (0-3b)
  4. Rozšíření předchozího úkolu o následující části: (0-5b)
    • - Vytvoření menu (alespoň tři položky).
    • - V položce typ grafu (chart type) mít možnost vybrat typ grafu (alespoň dva různé grafy). Pokuste se výběr grafu vyřešit pomocí startActivityForResult/registerForActivityResult.
    • - V obecném nastavení (settings) můžete dát uživateli vybrat například velikost kroku jednotlivých posuvníků nebo rozsah, barvu grafů.
    • - Zkuste přijít na způsob, jak v položce historie zobrazit historii předchozích hodnot a výsledků a tyto udáje ukládat do SharedPreferences a historii také zobrazit - https://developer.android.com/training/data-storage/shared-preferences.
    • - Můžete zkusit přidat i pravidelný vklad (viz video ukázka níže).
    • - Hodnoty nastavené od uživatele (např. počáteční vklad, úrok, doba) můžete také ukládat do SharedPreferences aby po vypnutí/spuštění aplikace zůstaly hodnoty z posledního výpočtu.
    • - Umožnit uživateli vyčistit historii (SharedPreferences).
    • Ukázka-1 pro inspiraci ukazuje pouze menu a první položku (změnu grafu). Jedná se o verzi z předchozího cvičení, tedy bez pravidelného vkladu. Vzhled dalších položek v menu si implementujte podle sebe.
    • Ukázka-2 rozšířená verze obsahuje i pravidelný vklad (je potřeba i modifikovat vzorec pro výpočet).
    • Úkol bude bodován na základě množství a obtížnosti přidaných prvků do předchozího cvičení.
  5. Implementace vlastního View (generování 2D čárového kódu): (0-5b)
    • - Přidejte tlačítko, pomocí kterého vygenerované View (vygenerovaný čárový kód) uložíte do souboru.
    • - Pokuste se vyřešit dynamickou změnu velikosti View (například při přetočení telefonu).
    • - Pokuste se vyřešit kontrolu správnosti kódu pomocí poslední kontrolní číslice (check digit)
    • UPC–A Check Digit Calculator
    • - Při hodnocení bude přihlédnuto i k samotnému řešení pro generování kódu.
    • - Odkaz na šablonu, ze které je možné vycházet: Barcode.zip.
    • - Odkaz na šablonu, vytvořenou ve starší verzi Android Studia (pro PC na učebně): Barcode.zip.
    • - Další dodatečné informace k úkolu najdete zde a v přiložené video ukázce: https://tamz2.mrl.cz/cviceni3.php.
  6. Sokoban: (0-5b)
  7. Sokoban pokračování - Ukládání skóre, výběr levelu, zobrazení náhledu levelu, ukládání rozehraného levelu: (max. 7-8b)
    • - Pokud byste měli problém do šablony z minulého cvičení přidat novou aktivitu, zkuste řešení ZDE (případně si založte nový projekt v Android Studiu a potřebné soubory si překopírujte do něj)
    • - Odkaz na popis z minulého cvičení (použíjte školní VPN): http://tamz2.mrl.cz/cviceni4.php
    • - Pro splnění úkolu je potřeba načítat herní levely ze souboru (pro nápovědu hledejte "ODKAZY S PŘÍKLADY NA ČTENÍ DAT A ZOBRAZENÍ V LISTVIEW" na předchozím odkazu), kdy po splnění daného levelu se přepne na level následující.

      - odkaz na levely

    • - Dále by bylo vhodné přidat výběr levelu pomocí např. ListView s názvem levelů - viz video ukázka (případně jednodušší varianta - výběrem z menu)
    • - V hodnocení úkolu bude také zohledněno zpracování práce s levely (např. zda hra dokáže pracovat s různě velkými levely nebo řešení výběru/čtení daného levelu; pokud se podaří, tak se pokuste načítat různé levely z jednoho souboru ať nemusíte vytvářet např. 30 souborů pro 30 různých levelů).

    • Další možná vylepšení:
    • - Zobrazit náhled levelu pomocí ListView nebo modernějšího RecyclerView, viz obrázek na konci. V této variantě se jedná o automaticky (programově) generovaný náhled levelu podle vzhledu levelu ze třídy SokoView - ne pouze například manuálně (vytípnutý) vložený obrázek do adresáře drawable/assets a poté do listu
    • - Ukládat nejlepší skóre ke každému levelu do úložiště (počet tahů, čas) - využít můžete SQLite nebo Room Persistence Library (případně SharedPreferences, ale bodově bude zvýhodněno použití jedné z předchozích technik)
    • - Ukládání rozehraného levelu
    • - Dále například: jednoduchý editor levelů; úvodní menu s výběrem postavy a zadání jména hráče; odemčení nového lelevu nebo postavy po splnění určitého skóre atd.
    • sokoban
  8. Počasí: (0-5b)
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
      - Pro síťovou komunikaci a práci s JSON můžete využít znalosti z přednášek (např. Volley, Gson)
      - odkaz na ikony
    • https://openweathermap.org
  9. Počasí - Fragmenty: (0-5b)
    • - Za pomocí fragmentů modifikujte předchozí aplikaci viz obrázky a video
      - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
      - Pokuste se přidat (navíc oproti ukázce) ještě jednu záložku (navigation bar item), ve které bude zobrazen graf reprezentující předpověď počasí na následující hodiny/dny
      - V hodnocení úkolu bude zohledněno zpracování fragmentů (např. zda aplikace dokáže přepínat fragmenty podle orientace zařízení/komunikace mezi fragmenty).
    • fragmenty
  10. Lokalizace tváří: (0-5b)
      - ml-kit/lokalizace-tvari-android
      - animace
      - Využíjte informace o lokalozovaných tvářích a jejich částech (vykreslete obdelník/kružnici kolem tváří/očí/úst; nahraďte nalezené tváře jinou tváří)
      - Ukázka aplikace:
  11. Počasí - Poloha, offline verze, nastavení (například jednotek, rozsahu/intervalu předpovědi, seznam posledních poloh/měst, atd.): (3-4b)
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)