android测行走距离,如何在Android中行走时计算距离?

7 个答案:

答案 0 :(得分:18)

有不同的方法可以做到这一点:

GPS:每X秒(比如10秒)继续添加2点之间的GPS距离。检查Android Location.distanceTo或distanceBetween。查看My Tracks应用,它是开源的。 GPS在室内不可用,如果用户频繁改变方向(每1-2秒读取一次),则会出现错误。

加速度计:使用加速度计查找用于步进检测的代码/库。距离来自加速度的双重整合,错误可以很快加起来。

步进检测器:内置于Nexus 5。谷歌必须尽可能地处理加速度计误差。这是基于硬件的计算,耗电量较少但截至目前大多数手机都没有。

醇>

答案 1 :(得分:13)

一种方法是使用加速度计数据。用户按下“开始”按钮后,您的应用应连续记录加速计数据。每当用户迈出一步时,您将在数据中观察到峰值。对此数据应用过滤器,您应能够以合理的准确度检测所采取的步骤数。将其乘以步长,您应该得到行进距离的近似值。将用户的高度作为输入参数。步长约为0.45 *一个人的身高。由于这种方法独立于GPS,因此它也适用于室内。

编辑:

您需要使用所有三个轴的加速度计值使其完全独立于设备方向。您可以使用x ^ 2 + y ^ 2 + z ^ 2

答案 2 :(得分:6)

在您的应用中询问GPS权限。点击开始时,记录GPS坐标。做同样的停止。你现在有两个坐标。然后,您可以应用距离公式来获得行进的总距离。

修改强>

至于评论中澄清的情况,我认为你需要研究的是Android的motion sensors。您可能需要做出很多假设,或者要求用户在实际使用前校准您的应用程序。

假设您了解用户的节奏因素。使用运动传感器,计算用户“走路”的时间长度(显然,没有简单的方法来确定您的用户是实际走路还是只是摇动手机)。将其与用户的节奏因子相乘,您就可以非常清楚地了解用户的步行量。

答案 3 :(得分:3)

评论"此解决方案存在一个问题。如果您以恒定速度行驶,加速度为0,因此加速度计不会读取任何读数。 - 16秒前的jnovacho"

(对不起,没有足够的声誉可以直接评论)

当你加速时,保存加速度,然后计算你走的速度。每当加速度改变并重新开始时停止计算速度。如果你停下来,你应该得到一个负面的加速,然后你必须计算你是否只是放慢速度或完全停止。但那仅仅是数学:)

答案 4 :(得分:3)

我选择了Gps方法。

通过以下步骤:

点击开始按钮,获取起点的纬度和经度,并将其存储在我的dto中并使用正确的TripId。

点击停止按钮:

TripDto dto = service.GetStartLatLong(TripIdA);

double lat = Double.valueOf(dto.getStartLati());

double lon = Double.valueOf(dto.getStartLongi());

Location locationa = new Location("point A");

locationa.setLatitude(lat);

locationa.setLongitude(lon);

double distance = location.distanceTo(locationa);

location.distanceTo()方法返回的距离以米为单位。

答案 5 :(得分:2)

public double getDistance(double lat1, double lon1, double lat2, double lon2)

{

double latA = Math.toRadians(lat1);

double lonA = Math.toRadians(lon1);

double latB = Math.toRadians(lat2);

double lonB = Math.toRadians(lon2);

double cosAng = (Math.cos(latA) * Math.cos(latB) * Math.cos(lonB-lonA)) +

(Math.sin(latA) * Math.sin(latB));

double ang = Math.acos(cosAng);

double dist = ang *6371;

return dist;

}

答案 6 :(得分:1)

尝试使用传感器,我觉得你不应该使用GPS,因为它可能不那么准确。

请参阅以下开源计步器项目,了解您所说的内容。

如果您想使用传感器,将使用更多指定的代码更新此答案。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值