( I think this question is platform independent, but I happen to be coding for a Nexus One).
About "current speed": I'm getting a callback every second or so telling me what my current latitude and longitude are. I can calc the distance between the current location and the previous location, so, I can keep track of cumulative distance and cumulative. With that I can say what the average speed has been for the ENTIRE trip. But how do I calc current speed? I suspect I need to use the most recent N samples, right? Am I thinking about this the right way? What's a good rule of thumb for N? (how many samples, or how many seconds back?)
About "stop time": If I'm just standing still, I can still get slightly different latitudes and longitudes reported to me, right? So, deciding that I'm not really moving means saying something like, "the previous X locs have all been within Y meters of each other", right? Am I thinking about this the right way? What's a good rule of thumb for X and Y?
Even about "distance": will I be understating it because I'm, literally, cutting corners? Is there an algorithm, a rule of thumb, for determining when I'm "turning" and should I add in a little fudge?
EDIT: I APOLOGIZE: I feel bad about wasting people's time and good will, but sadly, the device IS giving me speed. I thought it wasn't because in the emulator it wasn't, but on the real device it is. Thanks everybody. There's still some rule-of-thumb code I need to write, but speed was the biggest challenge.
EDIT: I retract the apology. In my original question I wrote that distance too is a derived value. If I just use the raw GPS data, I will be overstating distance because of the inaccuracies. I might be walking a straight line, but the raw GPS lat/long will wobble, so if I calc total distance by measuring the distance between the points, I will be overstating it. Here's some links that are related to this problem.
http://stackoverflow.com/questions/1134579/smooth-gps-data
http://www.cs.unc.edu/~welch/kalman/Levy1997/index.html
http://stackoverflow.com/questions/1849928/how-to-intelligently-degrade-or-smooth-gis-data-simplifying-polygons
http://stackoverflow.com/questions/204184/how-to-smooth-data-and-calculate-line-gradient