2016-07-25 36 views
1

我正在嘗試製作一個跟蹤用戶移動的應用程序。 到目前爲止,我已經顯示的位置的應用程序和「速度」帶GPS的運動跟蹤器使用LocationListener

protected void onCreate(Bundle savedInstanceState); 
setContentView(R.layout.main); 

txt = (TextView)findViewById(R.id.textView); 
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

LocationListener locationListener = new MyLocationListener(); 
locationListener.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,10,locationListener); 

} 
private class MyLocationListener implements LocationListener 
{ 
public void onLocationChanged(Location loc){ 
String longitude = "Long: "+ loc.getLongitude(); 
String latitude = "Lat: "+ loc.getLatitude(); 
txt.setText(longitude + latitude); 
} 

這是我的代碼。 但我想得到我的速度,行程距離以及最大和最小高度。 如果任何人都可以幫忙,請做,它將不勝感激!

+0

'protected void onCreate(Bundle savedInstanceState);'是那個';'一個錯字? –

+0

其實不是:D –

回答

1

你可以在這裏找到如何計算兩個位置之間的距離:Calculating distance between two geographic locations。我會計算onLocationChanged中每個位置之間的距離,並添加這些距離以獲得tripDistance。

,當你有距離,很容易通過將距離按時間來計算速度:

long startTime = System.currentTimeMillis(); //(in onCreate() 
long currentTime = System.currentTimeMillis(); //(in onLocationChanged()) 
long deltaTimeInSeconds = (currentTime - startTime) * 1000; 
double speed = tripDistance/deltaTimeInSeconds; 

爲了有高原,你可以使用loc.getAltitude();。你可以有兩個變量:double minAltitude, maxAltitude;和每個onLocationChanged()相應地更新它們。

+0

謝謝我會試試這個! –