Virtual Runner is an application designed to help athletes improve the effectiveness of a workout. Using Google’s Geo-Location API in conjunction with heart rate data being received from an attached Zephyr HxM, Virtual Runner provides real-time feedback to the user about their performance using verbal cues.

The project has existed for some time and had started out as a simulation that was built in Visual Studio using C# and XNA. With the Android version of the software however, the user has a constantly changing state which the application needs to monitor and then provide information to the user based on that information. Some of the existing research into how an athlete’s performance changes during the course of a workout was able to be worked into the new direction that the project is heading.

So that we can keep possibilities for future development as flexible as possible. I decided that the app should be broken into two separate components.

Virtual Runner Core is a collection of Java classes that provide the logic for the project. They are standard Java code and therefore do not rely on any Android libraries. This means that the component can be built as a jar file and used as a dependency in the Android application and any other related Java based application that may arise in future. It also means that development of both the logic and the Android specific code can be worked on independently with limited impact on each other.

The code for Virtual Runner Android is purely related to retrieving data from the handset to be passed to the core component and relaying the information that is returned in a usable way. The Google API’s Location Service provides the users speed whilst the heart rate information is picked up by the Zephyr HxM. This data is continually passed to the core component during a workout.

During a workout the user will receive feedback via some audio cues that are produced using the Android Text To Speech Engine. Full details of the workout can be viewed using graphs.