SlideShare a Scribd company logo
"Mutibo" 
Android Capstone Project 
University of Maryland / Vanderbilt University via Coursera 
Nate Betz
2 
Mutibo Project Description 
"Do you really like movies? Do you think you have a knack 
for solving puzzles? Test your movie trivia knowledge and 
puzzle solving abilities with Mutibo, a game in which you are 
asked to identify which movie in a group of movies is the 
odd one. After making your guess, the game will tell you 
the correct answer, explain the link between the movies, 
and let you rate the group of movie!" 
Application Architecture 
The application consists of a native Android application 
developed with Android Studio v0.8.14, REST-based server 
components developed in Java with Eclipse Luna and hosted 
by a local Tomcat server, with data persisted to a SQL 
Server 2012 RDMS instance. 
Application Tools, API's, and Components Utilized: 
Client Server Common 
Android Studio Eclipse Luna Git 
Google Play Services Spring Security HTTP/S 
Retrofit Spring Data REST MVC JSON 
Spring JPA JUnit 
Apache Tomcat OAuth2 
JTDS JDBC Driver Gradle 
SQL Server 2012
3 
Basic Project Requirements [BPR] and 
Implementation Details 
BPR-1: App supports multiple users via individual user accounts. 
Implementation: The application supports multiple users via individual 
user accounts that are authenticated with the Google Authentication API. 
Code References 
Client 
• SecuredRestBuilder.java 
• LoginScreenActivity.java 
Server 
• OAuth2SecurityConfiguration.java 
• ClientAndUserDetailsService.java 
BPR-2: App contains at least one user facing function available only 
to authenticated users. 
Implementation: Only authenticated users may start a new game. 
Code References 
Client 
• LoginScreenActivity.java 
(onConnected and updateUI) 
Server 
• OAuth2SecurityConfiguration.java 
(ResourceMapper and 
OAuth2Config) 
BPR-3: App comprises at least 1 instance of each of at least 2 of 
the following 4 fundamental Android components: 
• Activity 
• BroadcastReceiver 
• Service 
• ContentProvider 
Implementation: The application includes three Activity instances for 
the UI and one BroadcastReceiver instance. The BroadcastReceiver 
instance utilizes the system timer to provide a 10-second "bonus period" 
after a question is displayed, during which the player receives more points 
for a correct answer.
4 
Code References 
Client 
• LoginScreenActivity 
• ScoreboardActivity 
• QuestionActivity 
• MyBroadcastReceiver 
Server 
BPR-4: App interacts with at least one remotely-hosted Java 
Spring-based service. 
Implementation: The application interacts with a remotely-hosted Java 
Spring-based service for all game activities. See Appendix I for REST API. 
Code References 
Client 
• GameSvc 
• Common.GameSvcAPI 
Server 
• GameController 
BPR-5: App interacts over the network via HTTP. 
Implementation: All interactions between the client and server and 
conducted over the network via HTTP/S. 
Code References 
Client 
• GameSvc 
• Common.GameSvcAPI 
Server 
• GameController 
BPR-6: App allows users to navigate between 3 or more user 
interface screens at runtime. 
Implementation: The client application consists of 3 interface screens: 
Main/Login screen, Question screen, and Scoreboard screen, each 
implemented as Activities. 
Code References 
Client 
• LoginScreenActivity 
• QuestionActivity 
Server
5 
• ScoreboardActivity 
BPR-7: App uses at least one advanced capability or API from the 
following list (covered in the MoCCA Specialization): multimedia 
capture, multimedia playback, touch gestures, sensors, animation. 
Implementation: The application utilizes touch gestures, allowing the 
user to like or dislike a question by swiping up or down, and proceeding to 
the next question by swiping to the right. 
Code References 
Client 
• QuestionActivity 
(MyGestureDetector()) 
Server 
BPR-8: App supports at least one operation that is performed off 
the UI Thread in one or more background Threads of Thread pool. 
Implementation: All server requests are invoked by the client off the 
main UI thread via the use of AsyncTasks. 
Code References 
Client 
• CallableTask 
• TaskCallback 
• QuestionActivity, LoginscreenActivity 
Server 
•
6 
Mutibo App Functional Requirements [MFR] 
and Implementation Details 
MFR-1: A Set is a unit of data that contains four movie titles, 
optional associated images for each movie, information identifying 
the one movie that is not like the other three, and accompanying 
text, explaining the relationship between the three related movies. 
Implementation: As described. See screeshots and video walkthrough 
for more details. 
Code References 
Client 
• QuestionActivity 
• (Common) QSet.java 
Server 
• QSetRepository 
MFR-2: A User should be able to log into the game using an 
authenticated user account. (Login & session cookie, Basic Auth, 
HMAC auth, or OAuth 2.0 bearer token required along with/HTTPS 
to access the game.) 
Implementation: A user logs into the game using Google Sign-in, which 
provides an OAuth2 token and username that are passed to the service over 
HTTPS. 
Code References 
Client 
• LoginScreenActivity 
• GameSvc 
Server 
• OAuth2SecurityConfiguration 
(EmbeddedServletContainerCustomizer 
and keystore file for HTTPS) 
MFR-3: A single game presents a series of Sets and guesses, until 
the User has made three Incorrect Guesses. 
Implementation: As described, the game ends after 3 incorrect guesses. 
Code References 
Client 
• QuestionActivity 
Server 
•
7 
MFR-4: After viewing a Set, a User will be able to rate a Set based 
on the explanation of the link between the movies. 
Implementation: The user may Like a question set by swiping up, or 
Dislike a question set by swiping down. 
Code References 
Client 
• QuestionActivity 
Server 
• GameController (likeQSet() and 
dislikeQSet()) 
MFR-5: If a Set receives a large number of poor ratings, it can be 
removed from the game. 
Implementation: Question ratings are persisted to the database by the 
server. The query to retrieve the next question for any users will exclude 
questions for which the net rating (Likes minus Dislikes) is below a 
configuration threshold. 
Code References 
Client 
Server 
• GameController(nextSet()) 
• QSet NamedNativeQuery: 
QSet.GetRandomQSet 
• GetRandomQSet stored procedure 
MFR-6: For each successfully completed Set, the user will get 
Points. 
Implementation: Players receive points for each correct answer: 200 
points if within the "bonus" period, otherwise 100 points. 
Code References 
Client 
• QuestionActivity (processAnswer()) 
Server 
• 
MFR-7: All data (questions, answers, points, etc.) are stored to and 
retrieved from a web-based service accessible in the cloud.
Implementation: All data are stored to and retrieved from a web-based 
8 
service accessible via http and persisted to a SQL Server database. 
Code References 
Client 
• GameSvcAPI 
• GameSvc 
• SecuredResetBuilder 
Server 
• GameController 
• GameRepository 
Appendix I: REST API 
Path Method Function 
/oauth/token GET For OAuth authentication 
/mutibo/qset/scores GET Get high scores 
/mutibo/qset/next GET Get next QSet 
/mutibo/qset/getplayer GET Get player info 
/mutibo/qset/start GET Start new game 
/mutibo/qset/like/{id} GET Like the current QSet 
/mutibo/qset/dislike/{id} GET Dislike the current QSet 
/mutibo/qset/update POST Send game update to server
Appendix II: UUII SSccrreeeenn CCaappttuurreess 
9
10
11
Ad

More Related Content

What's hot (20)

PPT on Android Applications
PPT on Android ApplicationsPPT on Android Applications
PPT on Android Applications
Ashish Agarwal
 
Android ppt
Android pptAndroid ppt
Android ppt
Ansh Singh
 
Anjali Choubey
Anjali ChoubeyAnjali Choubey
Anjali Choubey
Anjali Choubey
 
Android presentation slide
Android presentation slideAndroid presentation slide
Android presentation slide
APSMIND TECHNOLOGY PVT LTD.
 
Campus portal for wireless devices
Campus portal for wireless devicesCampus portal for wireless devices
Campus portal for wireless devices
Shiladitya Mandal
 
Basic of Android App Development
Basic of Android App DevelopmentBasic of Android App Development
Basic of Android App Development
Abhijeet Gupta
 
Windows mobile
Windows mobileWindows mobile
Windows mobile
Shehrevar Davierwala
 
android app development training report
android app development training reportandroid app development training report
android app development training report
Rishita Jaggi
 
Android : Architecture & Components
Android : Architecture & ComponentsAndroid : Architecture & Components
Android : Architecture & Components
Akash Bisariya
 
Android application structure
Android application structureAndroid application structure
Android application structure
Alexey Ustenko
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application Development
Ramesh Prasad
 
Major project srs
Major project srsMajor project srs
Major project srs
Kapil Agrawal
 
Android basics
Android basicsAndroid basics
Android basics
Syed Luqman Quadri
 
R2D2- Personal assistant on android.
R2D2- Personal assistant on android.R2D2- Personal assistant on android.
R2D2- Personal assistant on android.
Mohd Nazim
 
Intro To Android App Development
Intro To Android App DevelopmentIntro To Android App Development
Intro To Android App Development
Mike Kvintus
 
Android basic principles
Android basic principlesAndroid basic principles
Android basic principles
Henk Laracker
 
Android before getting started
Android before getting startedAndroid before getting started
Android before getting started
Ahsanul Karim
 
Know all about android development
Know all about android developmentKnow all about android development
Know all about android development
Deepika Chaudhary
 
Chat Application [Full Documentation]
Chat Application [Full Documentation]Chat Application [Full Documentation]
Chat Application [Full Documentation]
Rajon
 
How Good is Java for Mobile Game Development
How Good is Java for Mobile Game DevelopmentHow Good is Java for Mobile Game Development
How Good is Java for Mobile Game Development
MetaDesign Solutions
 
PPT on Android Applications
PPT on Android ApplicationsPPT on Android Applications
PPT on Android Applications
Ashish Agarwal
 
Campus portal for wireless devices
Campus portal for wireless devicesCampus portal for wireless devices
Campus portal for wireless devices
Shiladitya Mandal
 
Basic of Android App Development
Basic of Android App DevelopmentBasic of Android App Development
Basic of Android App Development
Abhijeet Gupta
 
android app development training report
android app development training reportandroid app development training report
android app development training report
Rishita Jaggi
 
Android : Architecture & Components
Android : Architecture & ComponentsAndroid : Architecture & Components
Android : Architecture & Components
Akash Bisariya
 
Android application structure
Android application structureAndroid application structure
Android application structure
Alexey Ustenko
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application Development
Ramesh Prasad
 
R2D2- Personal assistant on android.
R2D2- Personal assistant on android.R2D2- Personal assistant on android.
R2D2- Personal assistant on android.
Mohd Nazim
 
Intro To Android App Development
Intro To Android App DevelopmentIntro To Android App Development
Intro To Android App Development
Mike Kvintus
 
Android basic principles
Android basic principlesAndroid basic principles
Android basic principles
Henk Laracker
 
Android before getting started
Android before getting startedAndroid before getting started
Android before getting started
Ahsanul Karim
 
Know all about android development
Know all about android developmentKnow all about android development
Know all about android development
Deepika Chaudhary
 
Chat Application [Full Documentation]
Chat Application [Full Documentation]Chat Application [Full Documentation]
Chat Application [Full Documentation]
Rajon
 
How Good is Java for Mobile Game Development
How Good is Java for Mobile Game DevelopmentHow Good is Java for Mobile Game Development
How Good is Java for Mobile Game Development
MetaDesign Solutions
 

Similar to Android Capstone Project, Final Deliverable Documentation (20)

Freelance Project - Java
Freelance Project - JavaFreelance Project - Java
Freelance Project - Java
SIN KANG TAN
 
Microsoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam DumpsMicrosoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam Dumps
Study Material
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB Stitch
MongoDB
 
Case study on Movie Quiz App For IPhone and IPad – Facebook Enabled
Case study on Movie Quiz App For IPhone and IPad –  Facebook Enabled Case study on Movie Quiz App For IPhone and IPad –  Facebook Enabled
Case study on Movie Quiz App For IPhone and IPad – Facebook Enabled
Grey Matter India Technologies PVT LTD
 
Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)
Deepak Gupta
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
mdevtalk
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
GlobalLogic Ukraine
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP
명근 최
 
Performance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity TestingPerformance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity Testing
Akshay Patole
 
ProjectReport_Subhayu
ProjectReport_SubhayuProjectReport_Subhayu
ProjectReport_Subhayu
Subhayu Chakravorty
 
Research Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and ScienceResearch Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and Science
researchinventy
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB
 
Google Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with ZabbixGoogle Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with Zabbix
Max Kuzkin
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
Xie ChengChao
 
Automatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos TabularesAutomatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos Tabulares
Gaston Cruz
 
Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020
Microsoft 365 Developer
 
Introduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backendIntroduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backend
Joseluis Laso
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB Stitch
MongoDB
 
Android101
Android101Android101
Android101
David Marques
 
Neeraj Kumar_Resume
Neeraj Kumar_ResumeNeeraj Kumar_Resume
Neeraj Kumar_Resume
Neeraj Kumar
 
Freelance Project - Java
Freelance Project - JavaFreelance Project - Java
Freelance Project - Java
SIN KANG TAN
 
Microsoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam DumpsMicrosoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam Dumps
Study Material
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB Stitch
MongoDB
 
Case study on Movie Quiz App For IPhone and IPad – Facebook Enabled
Case study on Movie Quiz App For IPhone and IPad –  Facebook Enabled Case study on Movie Quiz App For IPhone and IPad –  Facebook Enabled
Case study on Movie Quiz App For IPhone and IPad – Facebook Enabled
Grey Matter India Technologies PVT LTD
 
Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)
Deepak Gupta
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
mdevtalk
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
GlobalLogic Ukraine
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP
명근 최
 
Performance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity TestingPerformance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity Testing
Akshay Patole
 
Research Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and ScienceResearch Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and Science
researchinventy
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB
 
Google Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with ZabbixGoogle Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with Zabbix
Max Kuzkin
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
Xie ChengChao
 
Automatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos TabularesAutomatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos Tabulares
Gaston Cruz
 
Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020Microsoft identity platform community call-May 2020
Microsoft identity platform community call-May 2020
Microsoft 365 Developer
 
Introduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backendIntroduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backend
Joseluis Laso
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB Stitch
MongoDB
 
Neeraj Kumar_Resume
Neeraj Kumar_ResumeNeeraj Kumar_Resume
Neeraj Kumar_Resume
Neeraj Kumar
 
Ad

Recently uploaded (20)

Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar RabbiPresentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Md Shaifullar Rabbi
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar RabbiPresentation on Tourism Product Development By Md Shaifullar Rabbi
Presentation on Tourism Product Development By Md Shaifullar Rabbi
Md Shaifullar Rabbi
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Ad

Android Capstone Project, Final Deliverable Documentation

  • 1. "Mutibo" Android Capstone Project University of Maryland / Vanderbilt University via Coursera Nate Betz
  • 2. 2 Mutibo Project Description "Do you really like movies? Do you think you have a knack for solving puzzles? Test your movie trivia knowledge and puzzle solving abilities with Mutibo, a game in which you are asked to identify which movie in a group of movies is the odd one. After making your guess, the game will tell you the correct answer, explain the link between the movies, and let you rate the group of movie!" Application Architecture The application consists of a native Android application developed with Android Studio v0.8.14, REST-based server components developed in Java with Eclipse Luna and hosted by a local Tomcat server, with data persisted to a SQL Server 2012 RDMS instance. Application Tools, API's, and Components Utilized: Client Server Common Android Studio Eclipse Luna Git Google Play Services Spring Security HTTP/S Retrofit Spring Data REST MVC JSON Spring JPA JUnit Apache Tomcat OAuth2 JTDS JDBC Driver Gradle SQL Server 2012
  • 3. 3 Basic Project Requirements [BPR] and Implementation Details BPR-1: App supports multiple users via individual user accounts. Implementation: The application supports multiple users via individual user accounts that are authenticated with the Google Authentication API. Code References Client • SecuredRestBuilder.java • LoginScreenActivity.java Server • OAuth2SecurityConfiguration.java • ClientAndUserDetailsService.java BPR-2: App contains at least one user facing function available only to authenticated users. Implementation: Only authenticated users may start a new game. Code References Client • LoginScreenActivity.java (onConnected and updateUI) Server • OAuth2SecurityConfiguration.java (ResourceMapper and OAuth2Config) BPR-3: App comprises at least 1 instance of each of at least 2 of the following 4 fundamental Android components: • Activity • BroadcastReceiver • Service • ContentProvider Implementation: The application includes three Activity instances for the UI and one BroadcastReceiver instance. The BroadcastReceiver instance utilizes the system timer to provide a 10-second "bonus period" after a question is displayed, during which the player receives more points for a correct answer.
  • 4. 4 Code References Client • LoginScreenActivity • ScoreboardActivity • QuestionActivity • MyBroadcastReceiver Server BPR-4: App interacts with at least one remotely-hosted Java Spring-based service. Implementation: The application interacts with a remotely-hosted Java Spring-based service for all game activities. See Appendix I for REST API. Code References Client • GameSvc • Common.GameSvcAPI Server • GameController BPR-5: App interacts over the network via HTTP. Implementation: All interactions between the client and server and conducted over the network via HTTP/S. Code References Client • GameSvc • Common.GameSvcAPI Server • GameController BPR-6: App allows users to navigate between 3 or more user interface screens at runtime. Implementation: The client application consists of 3 interface screens: Main/Login screen, Question screen, and Scoreboard screen, each implemented as Activities. Code References Client • LoginScreenActivity • QuestionActivity Server
  • 5. 5 • ScoreboardActivity BPR-7: App uses at least one advanced capability or API from the following list (covered in the MoCCA Specialization): multimedia capture, multimedia playback, touch gestures, sensors, animation. Implementation: The application utilizes touch gestures, allowing the user to like or dislike a question by swiping up or down, and proceeding to the next question by swiping to the right. Code References Client • QuestionActivity (MyGestureDetector()) Server BPR-8: App supports at least one operation that is performed off the UI Thread in one or more background Threads of Thread pool. Implementation: All server requests are invoked by the client off the main UI thread via the use of AsyncTasks. Code References Client • CallableTask • TaskCallback • QuestionActivity, LoginscreenActivity Server •
  • 6. 6 Mutibo App Functional Requirements [MFR] and Implementation Details MFR-1: A Set is a unit of data that contains four movie titles, optional associated images for each movie, information identifying the one movie that is not like the other three, and accompanying text, explaining the relationship between the three related movies. Implementation: As described. See screeshots and video walkthrough for more details. Code References Client • QuestionActivity • (Common) QSet.java Server • QSetRepository MFR-2: A User should be able to log into the game using an authenticated user account. (Login & session cookie, Basic Auth, HMAC auth, or OAuth 2.0 bearer token required along with/HTTPS to access the game.) Implementation: A user logs into the game using Google Sign-in, which provides an OAuth2 token and username that are passed to the service over HTTPS. Code References Client • LoginScreenActivity • GameSvc Server • OAuth2SecurityConfiguration (EmbeddedServletContainerCustomizer and keystore file for HTTPS) MFR-3: A single game presents a series of Sets and guesses, until the User has made three Incorrect Guesses. Implementation: As described, the game ends after 3 incorrect guesses. Code References Client • QuestionActivity Server •
  • 7. 7 MFR-4: After viewing a Set, a User will be able to rate a Set based on the explanation of the link between the movies. Implementation: The user may Like a question set by swiping up, or Dislike a question set by swiping down. Code References Client • QuestionActivity Server • GameController (likeQSet() and dislikeQSet()) MFR-5: If a Set receives a large number of poor ratings, it can be removed from the game. Implementation: Question ratings are persisted to the database by the server. The query to retrieve the next question for any users will exclude questions for which the net rating (Likes minus Dislikes) is below a configuration threshold. Code References Client Server • GameController(nextSet()) • QSet NamedNativeQuery: QSet.GetRandomQSet • GetRandomQSet stored procedure MFR-6: For each successfully completed Set, the user will get Points. Implementation: Players receive points for each correct answer: 200 points if within the "bonus" period, otherwise 100 points. Code References Client • QuestionActivity (processAnswer()) Server • MFR-7: All data (questions, answers, points, etc.) are stored to and retrieved from a web-based service accessible in the cloud.
  • 8. Implementation: All data are stored to and retrieved from a web-based 8 service accessible via http and persisted to a SQL Server database. Code References Client • GameSvcAPI • GameSvc • SecuredResetBuilder Server • GameController • GameRepository Appendix I: REST API Path Method Function /oauth/token GET For OAuth authentication /mutibo/qset/scores GET Get high scores /mutibo/qset/next GET Get next QSet /mutibo/qset/getplayer GET Get player info /mutibo/qset/start GET Start new game /mutibo/qset/like/{id} GET Like the current QSet /mutibo/qset/dislike/{id} GET Dislike the current QSet /mutibo/qset/update POST Send game update to server
  • 9. Appendix II: UUII SSccrreeeenn CCaappttuurreess 9
  • 10. 10
  • 11. 11