Android Media App Dev
IGME-590
Project 1 - Utility App
Overview
Here's a list of the most popular Utility apps on the iOS App Store. The Google Play store doesn't have a Utility category, but they do have Tools and Widgets, which is close.
For our purposes, we'll define a Utility App very broadly as in "not a game", and "not a content driven app" (i.e. Facebook, Zillow, Yelp, ...).
You have a lot of freedom here in what you can create for this project - use this opportunity well!
The assignment is worth 20% of your final grade, is graded out of 100 points, and no late submissions will be accepted, so post what you have before the due date to receive partial credit. An A grade will be awarded only for meeting the requirements below, and going sufficiently "above and beyond" what we have done in class.
If you publish this app on Google Play prior to the beginning of finals week, your project grade will be raised by 10%.
Requirements and Rubric
- First, get a partner, and post both of your names to the discussion thread in mycourses. If you like, give your team a name.
- Now come up with an idea - make sure the scope of the project is neither too small or too large - check with the Prof.
- All app ideas must be approved by the Prof - make sure your idea is acceptable before building the prototype.
1. Usability and overall UX (40%)
- The UI should be intuitive - a typical user will be able to easily use the app without any verbal instructions. Label your widgets clearly, provide text instructions if necessary, and even Chrome style tooltips if it will help the user.
- The user should feel they have sufficient and satisfying control of the app.
- The app should do something useful, and do it well.
2. Required Features (30%)
- Set your Minimum SDK to Android 4.1
- Your app has three or more Activities. One of the Activities must be an "About this App" activity displaying the name of the app and team member names.
- At least 1 of these activities is a "child" activity that passes data back to a "parent" activity.
- Locally stored data - probably using
SharedPreferences
. - Your project has at least 1 Model Class (a
DataStore
class does not count towards this requirement) - The app maintains its state even when rotated or quit.
- Custom app icons for all of the available screen densities.
3. Visual Design (20%)
- Attractive and Functional UI.
- Make sure the app UI presents well on a variety of screen sizes. You must support at least 2 different screen sizes with an additional layout XML file. Here are 3 handy links about how to do this: http://developer.android.com/training/multiscreen/screensizes.html and http://developer.android.com/training/basics/supporting-devices/screens.html and http://developer.android.com/guide/practices/screens_support.html
- Support Landscape orientation, or make the app portrait only.
- Consider using Material Design elements. Here is a tutorial: http://www.raywenderlich.com/103367/material-design and a list of resources: http://www.sitepoint.com/10-essential-material-design-resources-and-tutorials/
4. Code (10%)
- Feel free to use Android code libraries. Any borrowed libraries or code fragments must be credited (author and URL) in both your code comments, and in the final documentation of the project.
- DO NOT use
ListView
- instead useRecyclerView
whenever you need a list or grid. - D.R.Y. - Don't Repeat Yourself. Repeated blocks of nearly identical code should be factored out and placed in a separate function.
- Naming conventions: variable and method names must begin with a lowercase letter. Class names are capitalized. Instance variables begin with the letter m.
- Well-commented code.
- You will only receive credit for code that you write beyond what you've inherited from our ICEs.
5. Penalties (There are no set values for penalties. The more penalties you make, the more points you will lose.)
- There are point deductions for:
- Runtime errors
- Poorly written or improper code - single character variables (besides loop iterators and such), unclear variable names, not indenting code, unused variables, using deprecated elements, etc
- Violating the Academic Honesty Policy (see syllabus) will result in an F in the course and an email to the IGM department chair.
Deliverables
See dropboxes for due dates:
- Written Proposal with UI Mockups
- Working Prototype installed on a device
- Final Version and Documentation in dropbox
- Final Version installed on a device
Documentation (-10% off of final grade if not completely done)
Both team members will submit docs. It's a good idea to document things as you are working on the project. Consider setting up a google doc right away so that you can posts links and other information there as you are working.
- Elucidate how you met the 6 categories of requirements, and be specific about any extras you did - i.e. where you went "above and beyond".
- Discuss what went right and what went wrong. List what features you would have liked to add to the project if you'd had more time/energy.
- Declare any non-course resources (libraries, sounds, images, tutorials, sample code) you utilized, in both your code comments, and in the final documentation of the project. Note: You don't have to document that you used the code I gave you in class.
- Precisely detail the contributions of each partner to the overall project.
- Grade yourself, your partner, and the overall project and justify it. Use a grade of 0-100%.