In college I found that there are sometimes gaps in my schedule between classes or events where nothing is happening. This is free time that could be used to be productive. But without planning, I find that I tend to not use this time for anything. I wanted to be able to fill these with tasks intelligently and easily, so I made an app that works with Google Calendar to automatically fill a schedule.

What it does

Allows for a series of tasks to be queued, with a given number of hours per task in the "Input Events" menu. Then by pressing "Call Google Calendar API" and then "Update Calendar", my program will look at your primary google calendar for free time slots of an hour or more and fill them with your queued tasks. It is hard-coded to look between the hours of 8AM to 10PM, on days ranging from tomorrow to a week from tomorrow, but those parameters can be changed easily in the future. Useful to schedule things such as studying, working out, or taking naps.

How I built it

I used the Google Calendar API with android studio. It is written in Java, with layout files in XML. I tested on my phone, an LG G3 running Marshmallow (6.01). The initial code was taken from the Google Calendar API quickstart page and modified into the current app.

Challenges I ran into

The main challenges I faced were writing a GUI, learning how to use the Google Calendar API, and coming up with a method to determine which time slots to schedule events in. Originally I wanted to split up the events over the course of a week and space them out by priority, but ran into problems with the algorithm to do this. Also I was planning on adding a feature where the user could choose which days of the week to schedule an event in, but did not implement it.

Accomplishments that I'm proud of

I'm proud of writing my first android app to completion. I've worked with android before but haven't built anything that was functional before this.

What I learned

I learned a lot about designing GUI elements in android, manipulating data inside an android applications, using the Google Calendar API, and working with time data.

What's next for ScheduleOptimizer

Clean up the GUI to make it more intuitive, add more options regarding what times to schedule in, come up with an algorithm to evenly space events and arrange them according to priority and convenience.

Share this project: