Final report - OwlNavi/Taskvatar GitHub Wiki

COSC345 Assignment Four Report

Project

Our project is called Taskvatar. The disability we are catering to is children with ADD/ADHD. Our app helps them to manage everyday tasks, and rewards them by allowing them to customize an avatar. Our goal was to ensure both parents and children found the app fun and easy to use.
The github URL is: https://github.com/OwlNavi/Taskvatar

Team members

Features completed since Beta

  • Added an alarm to tasks
  • Additional Avatar customisation
  • Input validation
  • Allowed editing of tasks and users
  • Allowed deleting of tasks and users
  • Fixed many bugs
    • RecyclerView used to open the main activity for the same number of users
  • Added total persistence for app features
  • User interface is the same across all activities

Teamwork review

Team dynamics have improved greatly since first semester, we are working more as a cohesive unit now. We used the agile methodology for development, we had bi-weekly scrum meetings where we discussed what we had changed and what features we were going to implement, or bugs we were going to fix. We felt the project was too small for LoC metrics or sophisticated analysis, working to a known plan was sufficient in our case. Often we would peer program.

User testing/Feedback

We had an initial meeting with some real-world end users, and we gathered ideas. We had 3 subsequent face to face meetings to update them about progress, and to ensure we were on the right track. Ideally this should be more, but our users were in a different city so more face to face meetings were not feasible. All of these meetings and informal messenger chats reiterated that we were on the right track with our app and not deviated from the initial vision. We were all working toward a common goal.

Discussion with Sasha, who is currently employed to look after a child with ADHD, said that the application was clearly not finished but possesed the basic core features needed: a task list, an alarm system and positive reinforcement through Avatar progression. She liked the simplistic approach to the user interface but said some parts lacked clarity such as which body part was currently being selected or modified.

User feedback told us that a heavily requested feature was the ability to choose your own alarm sound, which we have not been able to implement yet. In addition to user testing, we have unit tests in our app that test various methods, mostly the database side of things. We employed Travis CI in order to carry out automated testing and inform us if the tests failed.

Future Features

These are some features that are within the scope of the project, but we did not get enough time to complete

  • Custom alarm sounds
  • Bodyparts are worth different amounts of points
  • More avatar body parts
    • Customization of background for important events
      • Christmas/easter
      • Birthdays
      • Region anniversary
      • School holidays
      • Season start (summer, winter, etc)
  • When editing avatar, have images instead of text
  • Default tasks, better first user experience
  • Reset alarms every day
  • When editing avatar, highlight current (selected) body part
  • Tracking of personal statistics such as completed tasks within the allocated time. Implement the reporting feature
  • More indication that the current user is the user such as title should have username

New User Guide

A guide for new users on how to use Taskvatar

  • When you first load the app you will be guided towards creating a user account
  • After creating a user account you will be guided towards creating your avatar. Choose body parts until you have completed your avatar.
  • After completing your first avatar you will appear on the main screen. The avatar is display on the top section with a list of tasks to complete below it.
  • To add tasks, click on the menu button in the top right and select “Tasks” then “New Task”
  • After adding the tasks you want to keep track of, the “Home” button will take you back to the main screen
  • Touch a task to complete it, and the task will go green and the Completed tasks tally at the bottom will increment
  • When you have earned 10 points, go and customize your avatar!

New Developer Guide

Adding body parts

  1. To add new body parts and other customisation options you should add the body part image in .png format to the app resources in res/drawable. Note that adding a new resource will change the id’s of the existing resources, users may need to recreate their avatars
  2. In view/AvatarHome you need to add the body part name to the appropriate category in the getCategoryItems method e.g.
case LEFT_ARM:
	result.add("New_left_arm"); //the end user will see this text
  1. In helper/AvatarEditor you then need to specify what happens when you select that item in the appropriate method e.g. setLeftArm
case "New_left_arm": //this must match the string above
	//add the resource id of the .png	
	bodyPart = R.drawable.new_arm_resource_id;
	break;

Persistence

Access to the database is provided by the helper/DatabaseHelper class. This provides abstracted methods for interacting with the database, a sort of ORM. Method names are taken from CRUD methodology:

  • create* methods insert new data and return a long that is the id of the newly created item
  • read* methods return either an ArrayList of objects or a single object of the required type
  • update* methods act upon existing data and return a Boolean indicating whether the operation successful or not
  • delete* methods return an int which is the number of items deleted

All tables have a PK called "_id" (referred to as _ID in java), this is immutable.
The names of columns in the database is in helper/DatabaseColumnNames.
Important: If you make ANY changes to either of these files, make sure you increment DATABASE_VERSION. If you don’t do this, the app will crash. When the app detects a new version, it will delete data and recreate new tables.

Improvements to the code base

  • Reorganising code into methods oppose to populating the onCreate functions with initializing code for views
  • Customisation options such as the type of crown should be read from the database instead of hardcoding options into a switch statement in view/AvatarHome

References

Sasha April
[email protected]
Employed to work with an ADHD child.

Kirsten Philip
Parent of child with behavioral difficulties

Debra Walker
Parent of child with behavioral difficulties