Xamarin.Android App - Bewegungsnachverfolgung

  • Xamarin.Android

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    Xamarin.Android App - Bewegungsnachverfolgung

    Servus!

    Hab mir aktuell vorgenommen eine mobile App unter Xamarin für mein Android Handy zu schreiben, die meine Bewegung mittels GPS mit protokolliert. Da ich das ganze (sofern das per Activity erledigt werden soll) nur machen kann, wenn die App "aktiv" ist, sprich: Die Anwendung offen ist, bin ich auf das Backgrounding gestoßen: developer.xamarin.com/guides/a…ndamentals/backgrounding/
    Hier wird auch direkt als Beispiel eine Mitprotokolliert-App beschrieben.

    Worauf sich meine Frage bezieht: Wie kann ich am besten die zurück gelegte Strecke berechnen?

    Mein Ansatz wäre jetzt die Geopositionen in einer (lokalen) Datenbank (evtl Realm) zu speichern und bei jeder Abfrage die Punkte durchlaufen und eine Vektor Subtraktion der Positionen machen (und halt dann mal den Maß-Stab für die Real-Welt-Distanzen). Für's Ergebnis das Ganze dann aufsummieren.

    Was ich mir jetzt halt denke: Ist das nicht ein wenig unperformant?
    Ich kann mir durchaus vorstellen, dass sich der Wert (die Geoposition) zigfach pro Sekunde ändert (Auto!). Und wenn ich dann tausende von Einträge durchlaufen muss, dann kann mir die Performance brutalst einbrechen.

    Hat da eventuell schon wer Erfahrung?
    LG Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Was spricht dagegen, wenn man nach jeder Aktualisierung die neue Distanz zur gesamten addiert?
    "zigfach" pro Sekunde lohnt sich die Positionsaktualisierung auch nicht, da ich bezweifle das dadurch die Genauigkeit steigt(GPS ist dafür zu ungenau).

    3Angle schrieb:

    "zigfach" pro Sekunde
    Ok da hab ich ein wenig übertrieben ;D

    Hab auch schon einen (passenden) Geolocator Provider gefunden (hoff ich :D): github.com/jamesmontemagno/GeolocatorPlugin

    3Angle schrieb:

    Was spricht dagegen, wenn man nach jeder Aktualisierung die neue Distanz zur gesamten addiert?
    So wollte ich das auch schreiben. Dass ich zur bisher gemessenen Distanz die Distanz von Hier bis zur letzen aktualisierung zurück verfolge.

    Aber wie gesagt: Gibt es da einen anderen, schnelleren Algorithmus? Bin mathematisch-algorithmisch nicht sehr ausgestattet. Das mit der Vektor-Subtraktion ist mir auch nur eingefallen, da ich das mal in der Berufsschule wegen eines GUI-Designers in Java und einer Anwendung zum Zeichnen in C++ gemacht hab.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Danke @nafets!

    Hab mir das mal angesehen, es gibt sogar eine OOP Implementation in C# :D
    codeproject.com/Articles/18936…f-Douglas-Peucker-Line-Ap

    Und wer's mag, auch in C++: codeproject.com/Articles/1711/…glas-Peucker-Line-Approxi

    Werd's heute mal ausprobieren
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell