Попробовал сравнивать последнюю координату и 10ую. При стоянке выдает скорость от 0.2 до 0.7км/ч, ну хоть как-то можно использовать для определения топтания на месте.
function TAndroidServiceDM.GetSpeed(Lat,Lon: double; Dat:integer; LC: TList<TCoords>):double;
var
Speed: double;
SecBetween: integer;
DstBetween: real;
begin
Speed:=-1;
if LC.Count>=10 then
begin
SecBetween:=Dat-LC[9].Dat;
DstBetween:=GetDistance(Lat,Lon,LC[9].Lat,LC[9].Lon);
if (SecBetween<>0) then Speed:=3.6*DstBetween/SecBetween;
end;
Result:=Speed;
end;
Проверил в движении, скорость получается с запазданием и долго показывает скорость когда объект уже остановился, что собственно логично, но по крайней мере скорость почти идентична той что выдает программа Статус GPS.