Android:我如何在跑步的同时获得行驶距离?

时间:2013-06-07 10:00:22

标签: android gps

我正在打算申请,我必须在跑步时显示距离。 我使用LocationListener的函数“public void onLocationChanged”。当用户点击按钮并开始跑步时,我想显示他所覆盖的距离更新到他所在的位置。

我写了这段代码:

public void onLocationChanged(Location location) { 
    if(location != null) { 
        if(location.hasSpeed()){ 
            if(latitude1 == 0 && longitude1 == 0){
                latitude1 = (location.getLatitude()*Math.PI)/180;
                longitude1 = (location.getLongitude()*Math.PI)/180;
            } else{
                latitude2 = (location.getLatitude()*Math.PI)/180;
                longitude2 = (location.getLongitude()*Math.PI)/180;
                distance = (6372.795477598)*Math.acos(Math.sin(latitude1)
                           *Math.sin(latitude2)+Math.cos(latitude1)
                           *Math.cos(latitude2)*Math.cos(longitude1-longitude2));
                sumDistance += distance;
                latitude1 = latitude2;
                longitude1 = longitude2;
            }

            tv.setText("Distance covered=" + sumDistance + " m"); 
        } 
    } 
}

它有问题吗?

2 个答案:

答案 0 :(得分:2)

只是一个建议:

  • 当用户单击相应按钮时,存储起始位置和结束位置的纬度和经度。
  • 然后您可以使用distanceBetweendistanceTo来获取这两个geoPoints之间的距离。

P.S:如果用户在同一点开始和结束他的跑步,这可能不起作用;)

<强>增加:

检查tutorial

答案 1 :(得分:0)

最近谷歌改进了基于位置的API。他们将传感器与基于位置的api进行融合,以分享如何使位置更准确(约4倍更有效)并消耗更少功率(10倍小)的示例。

一些有趣的链接可供您thisvideo google io

有关如何使用API​​的here

的SO链接