You are not allowed to use third-party libraries. The only libraries you can use are the standard Android API libraries found in the following URL

You are required to implement an Android application described by the specifications below.
You are not allowed to use third-party libraries. The only libraries you can use are the standard Android API
libraries found in the following URL:
It is important to follow exactly the specifications and your implementation must conform to these:
The application developed will help the user to keep track of the movies he/she has watched, organise them
and look up information about them from the IMDB database.
1. When the application starts, it presents the user with 6 buttons labelled Register Movie, Display Movies,
Favourites, Edit Movies, Search and Ratings.
(3 marks)
2. Clicking on the Register Movie button, it should display to the user a page where the user can register
(create) a movie that he/she has watched. The page should contain 6 textboxes which can be used to enter the
title of the movie, the year, the director, a list of actors/actresses separated by commas, rating and review. For
example, the user can enter the following information corresponding to the 6 textboxes “Godzilla vs. Kong”,
“2021”, “Adam Wingard”, “Alexander Skarsg°ard, Millie Bobby Brown, Rebecca Hall, Brian Tyree Henry,
Shun Oguri, Eiza Gonz´alez, Julian Dennison”, “6”, “A fast-paced action movie keeping you in suspense for
90 minutes. Excellent performance by Shun Oguri.”.
4/1/2021 63926 – DescriptionYou are required to implement an Android application 3/6
The year textbox should accept only numeric values which are greater than 1895. The rating textbox should
accept only numeric values corresponding to the range of 1-10 (the user gives between 1 and 10 stars as his
The page should also contain a Save button, which when pressed saves all the details entered in an SQLite
database local to the mobile device.
(11 marks)
3. Clicking on the Display Movies button it displays to the user a list of movies sorted in alphabetical order
(one per line using the title of the movie entered in the previous question). A tickbox next to each movie is
also displayed (the tickbox should initially be blank, i.e. not ticked). The displayed movies should come from
the database and they should correspond to movies which the user created using the Register Movie
functionality in this instance of running the application or a previous instance that the application was run
(i.e. the application should NOT delete any saved movies when it exits and all data are persisted in the
If the list of movies is more than one page long, it should provide scrollbars that the user can use to see all the
The page should also provide a button Add to Favourites. The user can select which movies he/she wishes to
add as favourites by using the tickboxes and subsequently pressing the Add to Favourites button the
application will add the selected movies to the database as favourites (for this part, simply add an extra
column in the database table containing the list of all all movies).
(11 marks)
4. Pressing the Favourites button the application should display to the user a list of all his/her favourite
movies (one per line), i.e. all the movies that the user added to his favourites list using the Add to Favourites
button in the Display Movies page in the previous question. Next to each movie there is a checked tickbox
(ticked it means it is a favourite and as only favourite movies are shown in this page, all tickboxes should be
initially checked).
A button titled Save is also present in the page. The user can deselect any favourite movie by unchecking the
tickbox for any movie(s) and subsequently pressing Save will update the list of favourite movies in the
database, i.e. the status of any unselected movie will be updated in the database and become not favourite.
(12 marks)
5. Clicking on the Edit Movies button the list of all watched movies in the database will appear (i.e. all
movies watched whether they are favourites or not favourites)
After the list of movies appear, the user can click on the name of any movie and a new page will display all
the details of that movie from the database, i.e. title, year, director, actors, rating, review and its favourite
status indicated as “Favourite” or “Not Favourite”. The rating should appear by displaying the appropriate
number of stars in yellow colour (e.g. if 6 is given then 6 stars should appear in yellow, followed by 4 stars in
white colour).
The user should be able to edit the information displayed, in order to change any of the details of the movie
including whether it is a favourite or not, and then pressing an Update button which is also present on the
page will update the details of the movie in the database. The user should be able to edit the rating by clicking
in any of stars which will becoming yellow (active) or white (inactive). E.g. a rating of 6 should be indicated
by 6 yellow starts followed by 4 white stars (6 out of 10).
(10 marks)
6. Pressing the Search button, the user is presented with a single textbox and a Lookup button. The user can
type in the textbox any string and subsequently press the Lookup button to display all movies in the database
which contain the typed string in either the Title or the Director or Actors fields of the movie in the database.
The search should be case insensitive and a match does not have to be a complete match but partial. I.e. if the
user types the string “rUISE” the displayed movie(s) could be, a movie which contains “Tom Cruise” in the
list of actors or containing in its Title “The Cruise to London”.
(10 marks)
7. (a) Pressing the Ratings button the user is presented with the list of movies available in his database and a
Find movie in IMDB button.
The user can select which movie he/she would like to lookup its IMDB rating, by selecting a movie title (for
simplicity you can use radio buttons next to each movie) .
After the selection of a movie the user can click on the Find movie in IMDB button to display the list of titles
4/1/2021 63926 – DescriptionYou are required to implement an Android application 4/6
and their ratings (ONLY the titles of the movies) which matches with the title of the selected movie.
The list of movies should come from the following web service:
You will need to create a free account on that web service which gives you a unique key which you can use to
make queries.
You will need to parse the returned JSON formatted response after you send a similar request with the
following (you need to replace the YOUR API KEY with your own key): 2010
The above retrieves from the web service all titles which contain both the title “Inception” and 2010 as the
For example, it returns:
-expression-:-Inception 2010-, -results-:[
-title-:-The Distressed Watcher-,
-title-:-Travel Companions-,
-title-:-Hollywood on Set-,
-description-:-(2003{ )-
-title-:-Hollywood on Set-,
-description-:-(2003{ )-
-title-:-How It Should Have Ended-,
-description-:-(2005{ )-
4/1/2021 63926 – DescriptionYou are required to implement an Android application 5/6
The returned id (starting with tt, the first title above returns an id of tt1375666) which then can be used to
extract the rating of that title:
This request returns a JSON format reply containing the rating (8.8) of the title with ID tt1375666. The rating
can be found in the totalRating field. (15 marks)
(b) This subquestion should only be attempted if you completed the previous “Ratings” subquestion.
Hardcoded solutions, i.e. ratings not coming from the web service will not receive any marks.
Expand the “Ratings” functionality so that when the user clicks on the title of a movie, the image of the
movie is displayed in an ImageView. For this you will need to extract the URL corresponding to the movie
image from the JSON response, i.e.
the “image” field which follows the “title” field.
(8 marks)
Marking Scheme: The marks achieved for each part of the program are indicated in the description of the task
above. In addition to these the following will be taken into account:
• Code readability (structure, comments, variable naming, etc,): 5%
• Implementation (e.g. quality, efficiency, look and feel of the application, based on fonts, colours, etc.): 15%