Well my internet is currently down and I’m doing this offline at the moment, but today I’m going to start talking about the android project I wanted to work on.
Concept: App that auto sets alarms based off of when user needs to get up.
Use Case: User J is going to bed and needs to be at work by 8am, and she needs to be out the door by 7:30am. J tells the app what time she needs to leave by and checks off a list of user defined morning activities.
She wants to:
- go for a run (30 minutes),
- take a shower (20 minutes),
- get dressed (20 minutes),
- have breakfast (15 minutes),
- and pack up her laptop bag (15 minutes)
So the app will calculate that she needs to be up at 6:20am. So it will set an alarm for 6:10am 6:20am, and 6:30am to make sure J gets up when she wants to! The number of alarms set can be customized by the user but defaults to three, one 10 minutes before, at the time, and one 10 minutes after.
Possible future features:
- Put events from google calendar to see when the user needs to be somewhere instead of inputting it
- Do a puzzle to disable all alarms for that day after showing properly awake<- intended for those like myself who often set 5+ alarms in the morning.
- Tell the user if they don’t get up what they will be missing. Eg: “You don’t get to shower if you don’t wake up!”
Implementation:
Well after looking into it a bit, I realized that creating an actual alarm that works flawlessly and does all of this might be reinventing the wheel a bit. The alarm app on Android is not open source and none of the FOSS alarm clocks I found really worked the way I wanted. As it seems to be there’s an Alarm Clock that allows you to set but not destroy alarms on the alarm clock. I think this might be the best way to go about it and already found a related stackoverflow post. I won’t be working on this today but am just talking about the next steps.
Scheduling alarms the night before seems simple enough but disabling them might prove to be a little more complicated. From first glance at the Alarm Clock, it says that if an alarm for that time already exists it will modify that, otherwise create a new alarm. One option would be to ‘disable’ the alarms by setting them all to silent, but this seems a bit too ad hoc for my taste and confusing for the user since they would see active alarms that would not make noise. The other option I see if to only create new alarms if the user hasn’t disabled future alarms yet. I believe I would want to use the Alarm Manager for this to know when to set another alarm if certain conditions are set. Alas, that is a future feature I want to add so may never get to it, but it is the most likely for me to implement. I have no idea if anyone else has this much trouble getting up in the morning so I’m honestly tailoring the features to myself a bit since I know at least I will use it!