如何使用位置或加速度计或其他方式获得Android应用程序的速度

Sco*_*ion 6 performance gps android location distance

我正在开发应用程序并尝试获取用户行进的速度和距离.我已经使用Google Play服务定位类来获得速度,但它总是返回0.0值,而且根本不可靠.我想要实时准确的速度和距离.

我已经在我的设备上安装了GPS车速表应用程序,它非常完美,即使我走路也会给我速度.我想得到同样的东西.我对如何获得速度,使用位置或使用加速度计感到困惑,还是有其他方法可以做到这一点?

我的代码可以在这个链接上找到: -

使用Google Maps Android API v2在Google地图上绘制路线

我正在开发基于纯位置的应用程序,其中包括地图,速度和与地点相关的其他相关事项.

如果有人有任何想法,请帮助我解决速度和距离问题.

gah*_*hfy 13

我不得不处理同样的问题,你可以做的是使用位置策略代码.

然后,在每次更新位置时,您将保存当前更新的时间.因此,您将拥有之前和当前位置以及更新时间.

然后计算这两个位置(新旧位置)之间的距离(以米为单位)

private static long calculateDistance(double lat1, double lng1, double lat2, double lng2) {
    double dLat = Math.toRadians(lat2 - lat1);
    double dLon = Math.toRadians(lng2 - lng1);
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
            + Math.cos(Math.toRadians(lat1))
            * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
            * Math.sin(dLon / 2);
    double c = 2 * Math.asin(Math.sqrt(a));
    long distanceInMeters = Math.round(6371000 * c);
    return distanceInMeters;
}
Run Code Online (Sandbox Code Playgroud)

那么,你有距离和时差,我认为获得速度并不是什么大问题.

  • 为什么不使用`location.distanceTo(Location)`来获取距离? (7认同)
  • getSpeed 的文档(http://developer.android.com/reference/android/location/Location.html#getSpeed())说:“获取速度(如果可用),以米/秒为单位”。使用这种旧方法,您不必关心它是否可用。 (2认同)