The concept of our industry project is a runner named Bill. He serves as a visual reminder for the user so that they can better understand and be aware of their phone usage during school hours. Every day Bill runs marathons while the student is in class. Every time the students looks at their phone or enters a restricted app, Bill will slow down. If the user hasn't shown any "bad behaviour" Bill will get a speed boost. At the end the day the user will be able to see detailed statistics of their performance and they can use earned points based on distance Bill traveled to buy custom accessories or themes for Bill and the app.
Furthermore, the app will provide the user with motivational messages in the form on an ongoing notification. It will tell the user how well they're doing or how far they have until they reach their daily goal, ect. There's also an idea up in the air to add a competitive part to the app where two student's Bills can face off against each other.
After we had defined a concept for our app we got to work on realising some of the technologies that we would need to use within the app. I was tasked with the creation of two proof of concepts:
The point of this project was to be able to mute or otherwise straight up delete incoming notifications from any app on your phone. The concept was to be able to select certain apps to be blocked. The apps would be blocked from sending notifications to the user as long as they are in class. Alternatively the proof of concept can hide notifications from the user until they drag down the notification drawer on their phone.
In order to activate the app we need to detect if the user is in school and if they have class. We can't keep the app alive all the time so we need to schedule a job that will fire when certain conditions are met. I made a proof of concept that can do exactly that. My task was to make both a "workmanager" and a "jobscheduler". Both them work similarly, you give them a set of conditions that need to be met in order to have them activate and you give them a process to run once they do activate. Like this I was able to schedule a notification being pushed to the user after a certain amount of time has passed. Conditions like wifi access, phone charging state and idle state can be factored in as well.