我正在打算申请,我必须在跑步时显示距离。 我使用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");
}
}
}
它有问题吗?
答案 0 :(得分:2)
只是一个建议:
P.S:如果用户在同一点开始和结束他的跑步,这可能不起作用;)
<强>增加:强>
检查tutorial:
答案 1 :(得分:0)
最近谷歌改进了基于位置的API。他们将传感器与基于位置的api进行融合,以分享如何使位置更准确(约4倍更有效)并消耗更少功率(10倍小)的示例。
一些有趣的链接可供您this和video google io。
有关如何使用API的here
的SO链接