Mobile Apps 2019 Fall Projects (all grading is based on git history and content) https://gitlab.cs.ttu.ee (Uni-ID) Git repo has to be named icd0017-2019f Homework - Android MineSweeper - student code ending 0-4 Connect 4 - student code ending 5-9 Leg1 - UI Deadline 2019-10-13 23:59:59 Use fixed board size. Rotation A B vs AB A - statistics B - game board Game board implemented with buttons. Make it look nice! Buttons for game board have to be squares (equal sides)! Statistics screen has minimum height. Game screen can use rest of the free space. No code needed yet, just XMLs for screens. Leg2 - implement game logic Deadline 2019-10-27 23:59:59 Game engine has to be in separete kotlin class State saving for rotation. Make it nice and usable! ================================== HW 2 =================================== Radio App Leg1 Deadline 2019-10-27 23:59:59 implement basic flow - STOP->BUFFER->PLAY implement currently playing song info display (ask after some time interval, what track is currently playing) use Volley library for web requests Json info for SKY stations http://dad.akaver.com/Home/Feeds Streams http://sky.babahhcdn.com Make it nice and usable! This means, that app is actually decently usable - when phone call comes in, radio is stopped and then continues to play when call is over - song info is only displayed and asked, when radio is playing - rotation is supported, rotation will not add multiple broadcastlisteners etc Leg2 Deadline 2019-11-10 23:59:59 Support multiple stations in ui (provide data from static table in db, ui implements dropdown (spinner)) Implement database in your radio app. Save songinfo on track change to database. Provide statistics in separate activity about most played artist/track per radio station. ================================== HW 3 =================================== SporMaps App Deadline - 3 practical defence dates 21.12.2019, 06.01.2020, 10.10.202 App like endomondo, nike run, strava, runtastic, etc. General idea - app, that would help you in unknown terrain with navigation and training. App is based on Google Maps (or openstreet or some other) and built-in GPS functionality. Display map, and update your location on map display. Allow toggling of "keep map constantly centered", "keep north-up". When tracking is started, start to draw trail from start to current locattion. Allow user to set checkpoints (permanent) and waypoints (single) on track. Ie when adding new waypoint, remove previous. Calculate and display direct and travelled distance from start, last checkpoint and last waypoint. Time elapsed from start, pace (in minutes per km) overall in every three sections. Save all the sessions and all the checkpoints to database. Allow user to view/delete old sessions - display statistics and track on map. For controlling the app from lock screen, implement sticky custom layout notification - UI similar to what you have under the map. When user stops session, ask for confirmation. Do not let to start/stop session from lockscreen. Constantly(after every position update) update notification to display current info - distances and pace. GPS listener and notification intents broadcastlistener has to be implemented in service, otherwise app cannot be kept running in background. App has to support rotation (and state has to be restored) - move buttons from bottom to left-or-right screen edge in landscape mode. Provide on-screen compass (must be possible to turn on-and-off). Provide session export possibility - ie as email attachment for example. File format - gpx. https://www.topografix.com/gpx_manual.asp (checkpoints as waypoints gpx format). gpx entries hav to contain coordinates and timestamp (for later track analysis and animation). Change app icon into something more meaningful. Final testing of your app will happen in real life (end of dec 2019/ start of jan 2020) - using paper map and your app find hidden checkpoints in terrain - take photo of every cp and present these and your track (sent as email attachment to teacher) at the end. Asciiart of UI: -------------------------------------- North-Up Reset Compass Options GMAP -------------------------------------- Start 15 000 | add 1500 | add 783 or 1:35:47 | CP 1137 | WP 332 stop 8:45 | icon 6:37 | icon 7:35 =================================== Homework 04 - iOS =================================== TicTacToe Deadline - 3 practical defence dates 21.12.2019, 06.01.2020, 10.10.202 Leg1 Write a working game, MVC pattern (gamelogic in separate class). Allow playing against computer (HumanVsHuman game or 1-player game) AI minimal rules: * - if possible to win, win! * - if other player will win on next move - block. * - think your own rules, what to do next.... * - if no clear move, make a random move. Embed game into Master/Detail view Allow changing game colorscheme from master and who will start the game (X or O) Leg2 Save moves to array, display them in tableview. Disain custom cell layout. (show move cordinates, who made a move, draw small board, etc).