2017-01-18 8 views
-2

Ich arbeite derzeit an einer einfachen Fitness-App, mit der Benutzer seine/ihre Leistung (Laufen, Gehen) verfolgen können. Ich habe Location Manager verwendet, um die Bewegungsgeschwindigkeit zu erhalten, die sehr gut funktioniert. Aber ich muss die zurückgelegte Strecke zurückbekommen, wie kann ich mit Location Manager (long und lat) die Entfernung berechnen?Berechnen Sie die Entfernung gereist Android mit Location Manager

Dank

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_track); 

    start = (Button) findViewById(R.id.btnStart); 
    speed = (TextView) findViewById(R.id.txtSpeed); 
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 


    //initialize location listener 
    locationListener = new LocationListener() { 
     @Override 
     public void onLocationChanged(Location location) { 
      getSpeed(location); 
      double lat2 = location.getLatitude(); 
      double lng2 = location.getLongitude(); 
     } 

     @Override 
     public void onStatusChanged(String s, int i, Bundle bundle) { 

     } 

     @Override 
     public void onProviderEnabled(String s) { 

     } 

     @Override 
     public void onProviderDisabled(String s) { 
     } 

     //get the speed from the given location updates 
     public void getSpeed(Location location) { 
      currentSpeed = (location.getSpeed() * 3600/1000); 
      String convertedSpeed = String.format("%.2f", currentSpeed); 
      speed.setText(convertedSpeed + "Km/h"); 
     } 
    }; 
+1

Die Frage nicht erneut stellen! – Selvin

Antwort

0

Sie können möglicherweise Abstand zwischen jedem aufeinanderfolgenden Breiten- und Längen finden und halten hinzufügen.

Hier in Kilometern (km) immer Abstand

private double distance(double lat1, double lon1, double lat2, double lon2) { 
    double theta = lon1 - lon2; 
    double dist = Math.sin(deg2rad(lat1)) 
        * Math.sin(deg2rad(lat2)) 
        + Math.cos(deg2rad(lat1)) 
        * Math.cos(deg2rad(lat2)) 
        * Math.cos(deg2rad(theta)); 
    dist = Math.acos(dist); 
    dist = rad2deg(dist); 
    dist = dist * 60 * 1.1515; 
    return (dist); 
} 

private double deg2rad(double deg) { 
    return (deg * Math.PI/180.0); 
} 

private double rad2deg(double rad) { 
    return (rad * 180.0/Math.PI); 
} 

Hope this Ihnen hilft.

Verwandte Themen