This project is an Android application which uses the built-in accelerometer and signal processing to identify, track, and display steps taken by the user.
The current user interface could be improved aesthetically. The debugging interface should not be visible to the user until they perform some type of gesture.
To make the step detection process more accurate, there should be a way to repeatably run signal processing on a data set. There should be support in the application to load a .csv containing raw accelerometer data and calculate the number of steps detected in the file.
This feature could be used to improve the step detection procedure and to better tune the coefficients used in detecting steps.
Even better would be if the mechanism supported a file that contains a tag for how many steps were taken during the recording. Many tagged files could then be uploaded and the application could tune itself based on the data.
A number of different parameters used in the step counting detection process are hard-coded. It would be interesting to allow the user to change these parameters while the application is running.
The current implementation is using a regular sum of the component dimensions of the accelerometer and so is not getting as clear a signal on which to run the peak-detection algorithm, which results in reduced accuracy. Acceleration magnitude should instead be calculated as the Euclidean norm.
Also, see the Android SensorEvent documentation for how gravity can be filtered out to get real acceleration. This would further improve the step-detection accuracy.