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).
- Android Studio, instalace zalozeni projektu, emulator
- instalace a spuštění emulátoru (video)
V učebnách se emulátor nemusí spustit - zkuste tento postup:
In C:\Users\<your_name>\.android add a file named advancedFeatures.ini
add these parameters inside the advancedFeatures.ini file
Vulkan = off
GLDirectMen = on
Další možné řešení:
In Device Manager, click on the "Edit" icon next to your required virtual device. Then change emulated performance -> graphics from Hardware or None to Software.
Případně zde je celé vlákno: - https://stackoverflow.com/
- instalace a spuštění emulátoru (video)
- https://developer.android.com
- https://developer.android.com/studio/run/emulator
- Alternativně lze použít například emulátor genymotion
- https://developer.android.com/studio/debug/dev-options
- https://developer.android.com/build
- Ukazka aktivit, zakladni gui prvky, zasilani zprav mezi aktivitami
- Složený úrok (0-3b)
- Vytvoření aplikace, která bude počítat složené úročení - viz ukázka aplikace níže (daň z úroku neuvažujeme). Hint: CardView
- Matematický základ lze čerpat například z: https://www2.karlin.mff.cuni.cz/~portal/fin_mat/?page=slozene_uroceni
- Graf je možné vytvořit pomocí MPAndroidChart (níže je video ukazující základní použití knihovny): https://github.com/PhilJay/MPAndroidChart
- Dokumentace k MPAndroidChart: https://weeklycoding.com/mpandroidchart-documentation
- 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í.
- 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.
- Sokoban: (0-5b)
- - Pro splnění úkolu je potřeba vyřešit všechny správné pohyby hráče a beden po hracím poli
- Šablona (.zip)
- Šablona (.zip) pro starší verze Android Studia
- - Další informace naleznete zde (použíjte školní VPN): http://tamz2.mrl.cz/cviceni4.php
- - Nápověda: pro odchycení dotyků můžete využít funkci onTouchEvent: https://developer.android.com/develop/ui/views/touch-and-input/gestures/detector
- 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.
- 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
- 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).
- 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:
- 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)