GPS Tacho/Tracker

Hi,

mich würde mal interessieren, wie man bei Android und den GPS Daten die zurückgelegte Strecke ermitteln kann. Also quasie einen Tageskilometerzähler mit dem Smartphone.
Wie ich die Aktuelle Geschwindigkeit bzw Position auslesen kann weiß ich. Jedoch bin ich mir über die zurückgelegte Strecke und eventuell eine Durchschnittsgeschwindigkeit nicht sicher.

public class MainActivity extends Activity implements LocationListener {

@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
		lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
		
		this.onLocationChanged(null);
		
		
	}
@Override
	public void onLocationChanged(Location location) {
				String Speed= location.getSpeed();*3.6 + "km/h";
			}
		
	}
//...

Generell würde ich annehmen, am Sinnvollsten ist es, immer wieder die Entfernung zu einem letzten Punkt zu bestimmen und das aufzusummieren. Nun ist meine Frage, ob das hin kommt, oder ob da die Schwankungen zu groß sind, das ich also auch beim stehen quasie Strecke zurück lege.

Location alteLocation;
float strecke

@Override
	public void onLocationChanged(Location location) {
				String Speed= location.getSpeed();*3.6 + "km/h";
                                if (alteLocation!=null){
                                               strecke=strecke+alteLocation.distanceTo(location);
                                }
                                alteLocation=location;
			}
		
	}
//...

Das kann schon sein, dass du eine Location bekommst die zu nah ist. Falls dem so ist und der Zeitabstand zu kurz ist, wirf sie einfach weg. Die Frage ist nur, ob du für einen Tacho wirklich die gesamte Strecke haben möchtest und nicht nur die zurück gelegt Strecke in einem bestimmten Zeitfenster.

Danke schon mal für deine Antwort.
Ähm also vom Prinzip her schon in einem Zeitfenster (wenn man es so ala Tageskilometerzähler sehen würde). Die klassische Tacho Ansicht benötigt die Informationen ja garnicht, da ich ja die Geschwindigkeit direkt Auslesen kann mit location.getSpeed().

Hast recht, die Methode kannte ich nicht.

Nur für den fall das es hier mal andere gibt, die das Thema auch interessiert. ich habe es nun wie Folgt gelöst

private LocationlastLocation;

//...

// falls noch keine alte Location da ist
if (lastLocation==null) {
//erstelle diese anhand der aktuellen (initialisieren)
    lastLocation=location;
  }  else{
/* Ungenauigkeit rausfiltern, damit er nicht durch die Ungenauigkeit ständig die gefahrene Strecke hochzählt */
            if (location.distanceTo(lastLocation)>(10)) {
                calcDistance = calcDistance + location.distanceTo(lastLocation);
                lastLocation = location;
            }
            
//...

kann geschlossen werden