DISTANCE:
For every GeoPoint:
Using java Syntax Highlighting
Location location = new Location("gps");
location.setLatitude(geoPoint.getLatitudeE6() / 1E6);
location.setLongitude(geoPoint.getLongitudeE6() / 1E6);
Parsed in 0.030 seconds, using
GeSHi 1.0.8.4
...and then...
Using java Syntax Highlighting
float distance = location.distanceTo(otherLocation);
Parsed in 0.029 seconds, using
GeSHi 1.0.8.4
If you wanna get the route, here you have an example:
http://csie-tw.blogspot.com/2009/06/android-driving-direction-route-path.html...then you can iterate through points, get the distance between them and sum.
FOR CALCULATING SPEED:
Use Location API. An example:
http://marakana.com/forums/android/android_examples/42.html...and, for instance, in the callback onLocationChanged() get the System time (SystemClock.uptimeMillis()) and calculate. You'll probably need to smooth your calculations to avoid peaks.
CALORIES:
Ask Google or on a sports forum, no in an Android forum. A simple Google search returns you results as:
http://www.livestrong.com/article/111930-calculate-calories-burned/