PROG2005 – Programming Mobile Systems
Assignment 2 (S1 2021)
This assignment is due on Friday, 21 May 2021, at 11:00 pm. You should submit your source code as a ZIP
archive for all parts of the assignment to the assignment 2 submission link on the unit website. If the file size is
too large to upload via the submission link, please submit only the SRC folder of the Ionic projects as a ZIP file,
then send the entire project folders via a method specified by your tutor. Note that marks will be deducted for
poorly structured or uncommented code. All submitted source code files must include title comments that at least
identify the author and the assignment part. The separate parts of the assignment are to be submitted in separate
subdirectories (e.g. Part1, Part2 etc.).
Please note that this assignment will be due after the weekly sessions have covered the last of the required
materials, and covers several laboratory sessions and topics. Do not leave this assignment to the last minute –
complete the relevant parts of the assignment while concepts are fresh in your mind. If you require an extension,
you must apply to your tutor before the due date to be considered. Unless an extension is approved, there is a
penalty (see Unit Information Guide). This assignment requires you to develop two applications to demonstrate
your knowledge of Cordova and Ionic framework. It will start with a Cordova application in part 1, and you will
implement a multipage application using the Ionic framework in part 2. You must use only the TabsIonic template
for your apps for Part 1 and Part 2.
To ensure every aspect of the implemented apps work properly, test your apps on a real device or in an emulator
before the submission. The browser platforms do not support some of the plugins and hardware sensors, so the
applications may not be tested thoroughly in a browser window.
Part 1 – Ionic app using Ionic Native APIs (13 marks)
In this section, you will develop an app to use Cordova and Ionic Native plugins which access some of your
device’s hardware sensors (1 mark for the correct use of Ionic native). It is unnecessary to test your app on a real
device, but you should if you have one available. The app should be working correctly on an emulator (it will be
You are requested to develop a multipage Ionic app. The pages required are:
- A page to implement Text-To-Speech service. Add (3 marks)
• an input field to enter a string
• a range control to select the speed rate of the speech (0 ~ 1)
• a button to call and execute the speak function
• a button to stop the playback
Users will need to enter a text. When the speech button is tapped, the app starts generating the
synthesized audio output of the input text. You can also add a list for locale (a string like ‘enUS’,
‘zh-CN’, etc.) if you wish, but this is optional. You will need to research the ‘text to
speech’ plugin for this.
- A page to display the following device information (2 marks):
• Cordova version running on the device
• device’s model
• device’s operating system name and version
• device’s hardware serial number
To display the above information, you will need to add ‘Device’ Ionic native plugin to your
- A page to display the current magnetic compass heading in degrees (2 marks). This uses the ‘Device
Orientation’ plugin. For full marks, have the page show the heading in symbols N, NW, SE,
SSE, etc. (to three levels) (2 marks). For instance, SSE means South-South-East, which is south of
South-East. If you want to impress (no extra marks), display a compass and needle pointing to the
correct points of the compass.
- A page that has an audio player implemented to play audio files (3 marks). Your player needs
• a button that plays the audio when tapped
• a button to stop the play
• a range input to adjust the volume
To implement the above, you will need to use the ‘Native Audio’ Ionic native plugin. Add
the audio file to the ‘assets’ folder of the Ionic project.
Part 2 – Ionic app to manage a veterinary clinic’s animal database (12 marks)
The aim is to develop an Ionic multipage app for a veterinary clinic that uses Ionic components, to maintain a
small database of animal information while the app is running on a mobile device or in a browser window. The
app will access a remote website using RESTful operations (see below) to create, edit and delete records on the
Your app will implement an injectable service to access the remote website using AJAX techniques. Each page
component will access this injectable service for remote HTTP operations.
The data records have the following format (1 mark):
• Animal name – string. This will be a unique key for the data.
• Animal species – string (must be “dog”, “cat”, “rabbit”, “guinea pig”, “bird” or “other”)
• Animal age – number (will be the whole number of years)
• Animal sex – string (must be “male” or “female”)
• Phone number (owner’s number) – string
The data has the following requirements (1 mark):
• Each record must have a value for all fields. No field can be blank.
• The animal ‘species’ and ‘sex’ must be one of the options shown.
• The animal name can only be entered and saved once (it must be unique for each animal).
Your app will have several pages:
• Home page with greetings and your name as app author (1 mark)
• A page for listing all animals (1.5 marks)
• A page for adding new animals (1.5 marks)
• A page for editing the existing animals (3 marks). This page will also allow searching for animals and
deleting an animal from the data.
Your app will have help information that appears over the current page when requested (each page require a help
widget). The delete operation will require a prompt to confirm the delete. This prompt should be an Ionic dialogue
must change the icons to be appropriate (3 marks for all of these).
Use appropriate Ionic user interface components to implement the app. Several things are missing here from the
usual app. For example, there is no splash screen requested and no media or other native interfaces (e.g. pictures
of animals). You can add them if you wish, but these have not been added as requirements to simplify the app.
The sever is at URL http:spike.scu.edu.au:8080/PetServ/ and the RESTful operations are as follows:
GET PetServ/ - get all the animal data as a JSON response (an array)
GET PetServ/name - get data for an animal named “name”
PUT PetServ/ - updates the record on the database with the PUT body, which is a JSON format
animal record. If the animal name exists, the associated data is updated. Otherwise, a
new animal record is created.
DELETE PetServ/name - removes the record with the given name. Note that removal of the animal named
“terry” is forbidden (status 403 returned) so that students will find at least one record
on the server. Successful deletion of other records must return a proper message.