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

More Related Content

What's hot

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
 

What's hot (20)

PPT on Android Applications
PPT on Android ApplicationsPPT on Android Applications
PPT on Android Applications
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Anjali Choubey
Anjali ChoubeyAnjali Choubey
Anjali Choubey
 
Android presentation slide
Android presentation slideAndroid presentation slide
Android presentation slide
 
Campus portal for wireless devices
Campus portal for wireless devicesCampus portal for wireless devices
Campus portal for wireless devices
 
Basic of Android App Development
Basic of Android App DevelopmentBasic of Android App Development
Basic of Android App Development
 
Windows mobile
Windows mobileWindows mobile
Windows mobile
 
android app development training report
android app development training reportandroid app development training report
android app development training report
 
Android : Architecture & Components
Android : Architecture & ComponentsAndroid : Architecture & Components
Android : Architecture & Components
 
Android application structure
Android application structureAndroid application structure
Android application structure
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application Development
 
Major project srs
Major project srsMajor project srs
Major project srs
 
Android basics
Android basicsAndroid basics
Android basics
 
R2D2- Personal assistant on android.
R2D2- Personal assistant on android.R2D2- Personal assistant on android.
R2D2- Personal assistant on android.
 
Intro To Android App Development
Intro To Android App DevelopmentIntro To Android App Development
Intro To Android App Development
 
Android basic principles
Android basic principlesAndroid basic principles
Android basic principles
 
Android before getting started
Android before getting startedAndroid before getting started
Android before getting started
 
Know all about android development
Know all about android developmentKnow all about android development
Know all about android development
 
Chat Application [Full Documentation]
Chat Application [Full Documentation]Chat Application [Full Documentation]
Chat Application [Full Documentation]
 
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
 

Similar to Android Capstone Project, Final Deliverable Documentation

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
 

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

Freelance Project - Java
Freelance Project - JavaFreelance Project - Java
Freelance Project - Java
 
Microsoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam DumpsMicrosoft AZ-204 Exam Dumps
Microsoft AZ-204 Exam Dumps
 
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
 
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
 
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)
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
 
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
 
ProjectReport_Subhayu
ProjectReport_SubhayuProjectReport_Subhayu
ProjectReport_Subhayu
 
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
 
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...
 
Google Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with ZabbixGoogle Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with Zabbix
 
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
 
Automatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos TabularesAutomatizacion de Procesos en Modelos Tabulares
Automatizacion de Procesos en Modelos Tabulares
 
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
 
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
 
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
 
Android101
Android101Android101
Android101
 
Neeraj Kumar_Resume
Neeraj Kumar_ResumeNeeraj Kumar_Resume
Neeraj Kumar_Resume
 

Recently uploaded

Main Java[All of the Base Concepts}.docx
Main Java[All of the Base Concepts}.docxMain Java[All of the Base Concepts}.docx
Main Java[All of the Base Concepts}.docx
adhitya5119
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
mulvey2
 
Liberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdfLiberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdf
WaniBasim
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
Priyankaranawat4
 
The simplified electron and muon model, Oscillating Spacetime: The Foundation...
The simplified electron and muon model, Oscillating Spacetime: The Foundation...The simplified electron and muon model, Oscillating Spacetime: The Foundation...
The simplified electron and muon model, Oscillating Spacetime: The Foundation...
RitikBhardwaj56
 
Smart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICTSmart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICT
simonomuemu
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Digital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments UnitDigital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments Unit
chanes7
 
writing about opinions about Australia the movie
writing about opinions about Australia the moviewriting about opinions about Australia the movie
writing about opinions about Australia the movie
Nicholas Montgomery
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
tarandeep35
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
Nicholas Montgomery
 
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UPLAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
RAHUL
 
Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
Scholarhat
 
Pride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School DistrictPride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School District
David Douglas School District
 
A Independência da América Espanhola LAPBOOK.pdf
A Independência da América Espanhola LAPBOOK.pdfA Independência da América Espanhola LAPBOOK.pdf
A Independência da América Espanhola LAPBOOK.pdf
Jean Carlos Nunes Paixão
 
How to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP ModuleHow to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP Module
Celine George
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
NgcHiNguyn25
 
MARY JANE WILSON, A “BOA MÃE” .
MARY JANE WILSON, A “BOA MÃE”           .MARY JANE WILSON, A “BOA MÃE”           .
MARY JANE WILSON, A “BOA MÃE” .
Colégio Santa Teresinha
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
GeorgeMilliken2
 
How to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRMHow to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRM
Celine George
 

Recently uploaded (20)

Main Java[All of the Base Concepts}.docx
Main Java[All of the Base Concepts}.docxMain Java[All of the Base Concepts}.docx
Main Java[All of the Base Concepts}.docx
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
 
Liberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdfLiberal Approach to the Study of Indian Politics.pdf
Liberal Approach to the Study of Indian Politics.pdf
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
 
The simplified electron and muon model, Oscillating Spacetime: The Foundation...
The simplified electron and muon model, Oscillating Spacetime: The Foundation...The simplified electron and muon model, Oscillating Spacetime: The Foundation...
The simplified electron and muon model, Oscillating Spacetime: The Foundation...
 
Smart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICTSmart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICT
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
 
Digital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments UnitDigital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments Unit
 
writing about opinions about Australia the movie
writing about opinions about Australia the moviewriting about opinions about Australia the movie
writing about opinions about Australia the movie
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
 
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UPLAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UP
 
Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
 
Pride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School DistrictPride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School District
 
A Independência da América Espanhola LAPBOOK.pdf
A Independência da América Espanhola LAPBOOK.pdfA Independência da América Espanhola LAPBOOK.pdf
A Independência da América Espanhola LAPBOOK.pdf
 
How to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP ModuleHow to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP Module
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
 
MARY JANE WILSON, A “BOA MÃE” .
MARY JANE WILSON, A “BOA MÃE”           .MARY JANE WILSON, A “BOA MÃE”           .
MARY JANE WILSON, A “BOA MÃE” .
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
 
How to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRMHow to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRM
 

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