Check the horicontal accuracy attribute of Location
.
If it is under 30m you can ignore the location.
If you are sitting on your laptop and get speed = 40km/h (which I never saw in good GPS devices), then look what the hor. accuracy is. It probably is much over 30m.
In GPS based systems, never ever calculate the speed by positional change in time, just use the location.getSpeed(). The reason is that the GPS chip internally calculates the speed via physical doppler effect, not via positional change. While standing still, or at very low speeds this does not work well, so you have to filter out very low speeds, and bad gps signal. (via horicontal accuracy estimate)