As sleep-deprived students, we would like to have as much sleep as possible before starting the next day. Also, we like to arrive to school and other places just on time - not too early, while not being late. CommuteAlarm was designed to solve these problems.
What it does
CommuteAlarm is an Android application allows users to create alarms to help them wake up for a daily commute. Provide the location of the workplace, when you need to arrive by, and the length of your routine to prepare, then CommuteAlarm will handle the rest. The application will adjust when the alarm will ring based on the distance between your current location and your workplace, the length of your morning routine, and traffic conditions. In addition, the user-estimated prepare time will be automatically adjusted to its actual value, and the user's driving speed will adjust when the alarm will ring.
How we built it
We used the Google Maps API to get the user's current location and the Google Places API to select a workplace location. Google Maps was then used to determine the travel time to the workplace based on traffic conditions.
Geofencing was used to determine when a user left the house (prepare time length) and when a user arrived at work. These data points were stored for each day and analyzed to ensure that users arrive to work just on time and that alarms are adjusted as necessary.
Challenges we ran into
Serializing the workplace into JSON in a way that allowed us to retrieve its name and location later, getting traffic data from the Google Maps API with a HTTP request, as methods were not directly built into the Android Google Maps API.
Accomplishments that we're proud of
An intuitive and simple material design user interface
What I learned
Most of our team members worked with the Android SDK for the first time, and now we all know how to make our own Android apps. It was also our first time working with the Google Places and Maps APIs and sending, receiving, and processing HTTP requests on Android.
What's next for CommuteAlarm
Features that we would like to implement in the future include:
- Option to set a different ringtone for each alarm
- Select different modes of transportation
- Cache historical traffic data, so the app can work effectively while offline