A start-up creates videos which users can watch to experience their running or cycling activity all over again. Currently, the company depends on external data sources to generate a video. To be less dependent on these sources the company wants to create their own tracking soluti
...
A start-up creates videos which users can watch to experience their running or cycling activity all over again. Currently, the company depends on external data sources to generate a video. To be less dependent on these sources the company wants to create their own tracking solution. This solution has to fit in their existing smartphone application available for iOS and Android. The company wants to remain flexible, therefore the tracking application has to be developed in such a way that it can also be used in other products the company might develop in the future. As a goal, the data has to result in visually pleasing videos for a large user base.
Based on an experimental app developed during the research phase, raw smartphone GPS data was found to be unsuitable for video rendering. To improve this data, a Kalman Filter is used, in combination with a smoothing algorithm. The system has been designed to allow code sharing between iOS and Android where possible. The system has been implemented in Objective-C, Java, and TypeScript. Separating the system in three blocks enables code reuse which improves maintainability of the system. The filter has been integrated as shared code in the TypeScript implementation, which allows filtering to happen on the device. The user of the React Native Module developed has freedom to retrieve the unprocessed and processed data.
The system has been tested by means of unit tests in all three programming languages used. Tests have been executed using a continuous integration server, testing each pull request against the current code base to ensure quality. Part of the testing phase includes the React Native Module to be implemented in the client's smartphone application to demonstrate its use. The application has been sent to a number of test participants to collect data from different routes and activities. The project can be seen as a success since all important requirements have been successfully implemented.