Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPS-Tracking optimieren #396

Open
linatic7 opened this issue Mar 17, 2022 · 1 comment
Open

GPS-Tracking optimieren #396

linatic7 opened this issue Mar 17, 2022 · 1 comment

Comments

@linatic7
Copy link
Contributor

linatic7 commented Mar 17, 2022

Anforderung: Während des Events wird der Standort von mind. eines Teilnehmers eines Team regelmäßig und automatisch getrackt.
Bei Android-Geräten funktioniert das GPS-Tracking während des Events meist fehlerhaft (große Sprünge bei Standorten. unregelmäßige Aktualisierung, manchmal gar keine Aktualisierung). Bei iOS-Nutzern wird der Standort alle 15 Minuten und zusätzlich bei neuen Postings aktualisiert.
Dies soll auch bei Android-Nutzern automatisch im Hintergrund geschehen.
Alternative Möglichkeit ohne App: Standorttracking über Website möglich machen. Während des Events trackt die Website sobald sie auch nur im Hintergrund auf einem Smartphone geöffnet ist, alle ca. 15 Minuten den Standort (ohne sie aktiv geöffnet zu haben!). Wichtig: Nur während 36 Stunden und nur für Teilnehmer.

@linatic7 linatic7 changed the title GPS-Tracking optimieren GPS-Tracking optimieren (bis Event-Start) Mar 17, 2022
@sibbl
Copy link
Contributor

sibbl commented Mar 17, 2022

Hallo Break-Out 😊ich denke bei dem Issue kann ich mich gut mit einklinken.

Vorab: das Standort-Tracking via Webseite wird technisch aus meiner Sicht nicht möglich sein, solange die Seite nicht geöffnet ist. Dazu zwei lesenswerte Issues vom W3C, die die Standards diskutieren und entweder bereitstellen oder wie in diesem Fall aus Gründen eben nicht:

Hinsichtlich Android dürften folgende Zeilen die relevanten Code-Stellen sein: https://github.com/BreakOutEvent/breakout-android/blob/b5d09de6c2702e5d6e428e9920259c41fd9e5147/app/app.js#L87-L96

Der Operation watchPosition kann man diverse Optionen übergeben, die hier hier von React Native in der vom Projekt aktuell verwendeten Version 0.60 dokumentiert sind.

Dabei fällt mir vor allem auf, dass enableHighAccuracy deaktiviert ist. D.h. GPS wird aktuell gar nicht verwendet, sondern lediglich anhand von WLAN-Netzwerken und dem Mobilfunknetz mehr oder weniger gut geschätzt wo man sich befindet. iOS setzt dafür keine Einschränkung und nutzt vernünftigerweise GPS.

Der Grund für diese Entscheidung dürfte gewesen sein, dass man watchPosition kein Intervall mitgeben kann. D.h. aktiviert man es, ist GPS vermutlich dauerhaft aktiviert und es zieht unnötig Akku. Genaue Erfahrungswerte habe ich dazu bei React Native nicht.

React Native hat seit Version 0.66 keine Geolocation-Anbindung mehr direkt mit an Bord, sondern dies wurde in ein eigenes Projekt ausgelagert. Weitere Optionen wie z.B. ein Intervall für die Standort-Aktualisierung sind leider nicht dazu gekommen. D.h. man ist immer noch sehr darauf angewiesen was da intern entschieden wird und man hat nicht die Kontrolle, wie man sie mit einer nativen Android-App hätte.

Um dies zu ermöglichen, würde ich vorschlagen auf ein anderes Modul wie react-native-location zu wechseln. Dieses bietet Einstellungen wie interval, fastestInterval, maxWaitTime sowie bei desiredAccuracy auch den Modus balancedPowerAccuracy. Dinge, die auf Android-Ebene ohne React Native auch nicht besser konfigurierbar wären (siehe Android-Doku) und meiner Meinung nach zum Erfolg führen können.

Ich würde mich sehr über Feedback dazu freuen und - sofern nicht anders abgesprochen - gern auch im April daran arbeiten. Vielleicht können wir somit ein paar Parameter auf verschiedenen Geräten ausprobieren und Akkuverbrauch sowie Genauigkeit der Ergebnisse über ein paar Wochen beobachten?

@JosiBreakOut JosiBreakOut changed the title GPS-Tracking optimieren (bis Event-Start) GPS-Tracking optimieren Apr 1, 2022
@sibbl sibbl self-assigned this May 23, 2022
@sibbl sibbl removed their assignment Jun 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants