Java 用户跑步/步行时如何跟踪距离

Java 用户跑步/步行时如何跟踪距离,java,android,eclipse,distance,tracking,Java,Android,Eclipse,Distance,Tracking,我目前正在开发一款可以追踪跑步距离的应用程序。 我的想法是当我点击开始时,我会记录我开始跑步的位置,然后当我点击停止时,它会记录我结束跑步的位置。然后计算这两点之间的距离。 我不知道为什么不管我怎么跑,我的距离结果总是显示我跑了0公里。请帮我看看是否有任何问题~ package com.example.ifitness; 导入com.google.android.gms.maps.CameraUpdateFactory; 导入com.google.android.gms.maps.Google

我目前正在开发一款可以追踪跑步距离的应用程序。 我的想法是当我点击开始时,我会记录我开始跑步的位置,然后当我点击停止时,它会记录我结束跑步的位置。然后计算这两点之间的距离。 我不知道为什么不管我怎么跑,我的距离结果总是显示我跑了0公里。请帮我看看是否有任何问题~

package com.example.ifitness;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.SupportMapFragment;
导入android.content.Intent;
导入android.location.Criteria;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.SystemClock;
导入android.support.v7.app.ActionBarActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView
公共类calorieburn扩展ActionBarActivity实现LocationListener{
私人谷歌地图;
私密定位;
私密定位;
私人双拉塔;
私人双龙眼;
私人双板条;
私人双人长裤;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.carorieburn);
SetupMap();
按钮开始=(按钮)findViewById(R.id.start);
start.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
latA=startLocation.getLatitude();
longA=startLocation.getLength();
TextView距离=(TextView)findViewById(R.id.distance);
距离(0公里);
TextView卡路里=(TextView)findViewById(R.id.carorie);
卡路里(0卡);
}
});
按钮停止=(按钮)findViewById(R.id.stop);
stop.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
latB=endLocation.getLatitude();
longB=endLocation.getLongitude();
TextView距离=(TextView)findViewById(R.id.distance);
distance.setText(String.valueOf(距离(latA、longA、latB、longB)+“km”);
TextView卡路里=(TextView)findViewById(R.id.carorie);
卡路里.setText(String.valueOf(距离(latA,longA,latB,longB)+“cal”);
}
});            
}
公共双倍卡路里(双倍距离){
双倍卡路里=0;
卡路里=距离*100;
返回热量;
}
公共静态空白间距(){
}
公共双距离(双纬度、双液化天然气、双纬度、双经度){
地点失水事故=新地点(“失水事故”);
定位纬度(lat);
失水事故(液化天然气);
位置locB=新位置(“locB”);
地点设置纬度(纬度);
地点经度(经度);
双倍距离=locA距离(locB);
返回距离;
}
私有void SetupMap(){
if(map==null){
//获取对activity_main.xml的SupportMapFragment的引用
SupportMapFragment mf=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
//从片段中获取谷歌地图
map=mf.getMap();
}
if(map!=null){
//启用Google地图的MyLocation层
map.setMyLocationEnabled(true);
//从系统服务位置\u服务获取LocationManager对象
LocationManager lm=(LocationManager)getSystemService(位置服务);
标准=新标准();
标准.设定准确度(标准.准确度/精细度);
字符串bestprovider=lm.getBestProvider(条件,false);
字符串提供程序=LocationManager.NETWORK\u提供程序;
if(提供程序==null){
onProviderDisabled(提供者);
}
//获取当前位置
位置loc=lm.getLastKnownLocation(最佳提供商);
如果(loc!=null){
位置改变(loc);
}
setOnMapLongClickListener(onLongClickMapSettings());
}
}
private OnMapLongClickListener onLongClickMapSettings(){
//TODO自动生成的方法存根
返回新的OnMapLongClickListener(){
@凌驾
在MaplongClick(LatLng arg0)上的公共无效{
//TODO自动生成的方法存根
Log.i(arg0.toString(),“用户长时间单击”);
}
};			
}
@凌驾
已更改位置上的公共无效(位置){
//TODO自动生成的方法存根
//正在获取当前位置的纬度
双纬度=location.getLatitude();
//正在获取当前位置的经度
double longitude=location.getLongitude();
//为当前位置创建LatLng对象
LatLng LatLng=新LatLng(纬度、经度);
//在谷歌地图中显示当前位置
地图移动摄像机(CameraUpdateFactory.newLatLng(latLng));
//放大谷歌地图
map.animateCamera(CameraUpdateFactory.zoomTo(17));
}
私有void makeUseOfNewLocation(位置){
//TODO自动生成的方法存根
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
//TODO自动生成的方法存根
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
//TODO自动生成的方法存根
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
//TODO自动生成的方法存根
}

}
这真的不是正确的工作公式