This application was created by Gregory Garman, Wesley Harris, and Joseph Barshay as part of CodePath's Android University course.
Many people in our generation struggle to get exercise and manage their mental health, especially during the COVID-19 pandemic, which can be very isolating. Some of us on the team are regular runners, and we noticed that getting out for a run greatly improved our mood and lowered our stress level. So, we sought to create an app that would allow users to track their runs. However, what makes our app unique is that the focus is on drawing attention to the mental health benefits of exercise and tracking how runs impact one's mental health.
What it does
The Android app is modeled after many other very successful run-tracking applications. The user creates an account, which saves the runs they go on.
Going for a run
Each time the user begins a run, they first fill out a survey asking for their mood (rated on a scale from 1-5) and their stress level (rated from 1-10). The run then begins, and the application uses location services and a location manager to keep track of the distance ran, current pace, time, and the path taken. When the user stops tracking the run, they fill out another survey, again asking for mood and stress. They can view their path taken, the data from the run (time, distance, etc), and they can add an optional note to save with the run.
The user can use the application to view their past runs, seeing all of the relevant details, as well as graphs to show changes in mood and stress level from before to after the run. Additionally, the user can navigate to a feed which shows the runs taken by every user of the application, sorted by most recent. Each run is labeled by user name. If they wish, the user can comment on a comment thread on any of these runs.
The application also supports a number of additional features, like:
- A mental health resource page
- Personalization settings (user profile picture, miles vs. kilometers)
- Summary data on past 5 and past 10 runs.
How we built it
The app is built using the Java programming language, developed in Android Studio. It has three main activities: the LoginActivity (user authentication), MainActivity (hosts most fragments of the app, including those involved with running), and MoreInfoActivity (run details). BottomNavigation in the MainActivity, along with buttons and the ActionBar help the user navigate through the app. In order to persist user, run, and comment data, the app uses a Parse backend, hosted on back4app. The run tracking utilizes the location services of the user's device, as well as the Google Maps API to display the run path taken.
Challenges we ran into
Some of the main challenges that our team faced were:
- Only one team member owned a physical Android device to test on (the rest used emulators)
- Understanding how to properly manage GitHub branches and issues
- Looking through documentation on the we wanted to tackle was very time-consuming
- Troubleshooting bugs on such a large project was difficult and led took up valuable time
Accomplishments that we're proud of
- Taking the opportunity to demo our app at CodePath demo days
What we learned
- How to collaborate through Git VCS and GitHub
- Some aspects of Agile software development (sprints, project board workflow)
- How to implement Android location services
- How to implement Google Maps services
- Gained experience demoing our work to an audience of peers
What's next for Runner's High
There are a number of features that our team discussed that we either have not been able to implement yet, or are keeping in mind as optional features to add in the future. These include:
- Allowing users to view their live position while running
- Text-to-speech notifications while running
- Display of long-term trends in mood/stress
- Allowing users to pick an end destination and to receive directions to the point