teaching machines

Music Quiz Classic Postmortem

December 10, 2014 by . Filed under cs436, fall 2014, postmortems.

Music Quiz Classic:
Quiz yourself on your own music library! Music Quiz Classic uses your personal music collection to play random songs for you to guess. Unlimited hours of gameplay! Highscore tracking across play-throughs. Bonus ‘About’ feature displays location based information related to the artists on your device!
Note: User must have music on their device for the app to function properly. The app does not supply any music or independent quizzes.

Achievements

  1. Persist data using preferences (Add/Remove artists name from answers, utilizes a settings activity that saves the data in preferences, the game reads the preference every time it is started)
  2. Use threading to handle tasks off the UI thread (Async tasks are used for playing music on the device, downloading information from webservices, and computing the users music library)
  3. Localize into 3 languages (Buttons and information in settings are localized into English, German, and Spanish)
  4. Employ a web service (Lyrics are downloaded from LyricWikia in JSON format, band origins (locations) are scraped from Wikipedia)
  5. View spatial data using maps (Band locations are displayed on a map activity)
  6. Integrate a custom list view (Information scraped from Wikipedia is displayed in a 2 column list view)
  7. Acquire and use location information from GPS (Calculates distance between user and a band location and displays the information in the popup bubble on the map activity)
  8. Use a local database to persist relational data (High scores from the game are saved in a local database, supports full deletion)
  9. Embed google analytics (Analytics code is embedded in the main game loop to track # of active users)
  10. Use a remote database to persist relational data (High score information is sent to remote database)
  11. Use OpenGL to perform custom drawing (Music notes are drawn to the background of the game screen, they float around and have lots of colors)
  12. Integrate ads using AdMob (An ad fragment is located at the bottom of the game screen, rotates out ads every 30 seconds)
  13. Utilize a game loop pattern (A game loop pattern was used to facilitate the constant loop required to run the game forever)
  14. Utilize a device content provider (The devices music library content provider is used to grab the names and physical file paths to music files stored on the user’s device)
  15. Formally release an app to the public on the app store (https://play.google.com/store/apps/details?id=com.x24software.Music_Quiz_Classic)(Not available as of this posting but soon, some features removed for public release such as lyric scraping and remote database connections)

Challenges

Many problems arose during the development of the application: fighting with the android sdk, getting google play services jar imported correctly, messing up my version control, and working with InteliJ instead of Android Studio. It is kind of hard to look backwards in retrospect to identify the exact problems because most if not all of them were eventually solved. Oh well, it was definitely a very long yet very helpful journey.

Screenshots

device-2014-12-10-211036 device-2014-12-10-211144 device-2014-12-10-211158 device-2014-12-10-211303