GPS gefixt halten, unabhängig von Livecylce

  • Guten Tag,


    ich starte alle 10 Sekunden einen Service, welcher dann die Position holt und hochlädt.
    Momemtan mache ich es nur über den Network_Provider, allerdings würde ich auch gerne die Alternative über GPS bieten. Das Problem ist jetzt, dass wenn ich GPS updates ohne regelmäßige Updates mache (also ohne requestLocationUpdates), dass GPS dann jedesmal wieder neu gesucht werden muss, oder?
    Kann ich das irgendwie umgehen?
    Den Service dauerhaft laufen zu lassen ist nicht mein Ziel, wäre also über Möglichkeiten sehr glücklich.

  • naja ohne das du regelmäßig das gps abfragst, weiß ich nicht wie es ohne neue suche funktionieren soll. Android wird aus stromgründen den gps dienst nach einer gewissen zeit abschalten. Was hindert dich daran, requestLocationUpdates zu nutzen?

  • Die Tatsache, dass der Service nur dann gestartet wird, wenn ein Update benötigt wird und danach wieder beendet wird. Aber anscheinend reichen 10 Sekunden Abstand nicht aus, um GPS abzuschalten, einmal gefunden hält es unabhängig vom Service den Dienst aufrecht.


    Ich denke dann hat sich die Frage erledigt.

  • Eigentlich sind das zwei Paar Schuhe.


    Der GPS Chip schaltet sich ein und sucht eine Position, sobald $irgendwer das in Auftrag gibt.
    Aus Gründen der Energieersparnis bleibt das Ding dann ein paar Sekunden an, weil 30 Sekunden laufen lassen weniger Strom kostet als 6x anschmeißen, 5 Sekunden lang den fix abwarten und wieder killen.


    Wenn im Hintergrund irgendwer (Facebook oder Google Maps zum Beispiel) kontinuierlich die Postion abfragt, dann schaltet sich der Chip auch nicht ab.
    Dein Service wird da auch gar nicht lange starten und warten müssen, er bekommt einfach die Infos.


    Warum das Abfragen alle 10 Sekunden sein muss verstehe ich nicht.
    Zu Fuß kommst Du in 10 Sekunden nicht annähernd so weit wie mit dem Rad (16,7m bei 6km/h vs 55,6 m bei 20km/h) und 10 Sekunden im Auto sind streckentechnisch ein Witz gegenüber 10 Sekunden im Flugzeug (166,7m bei 60km/h vs. 1,67km bei 600km/h).


    Die Aussagekraft der Messung ist also meiner Meinung nach sehr fragwürdig.


    Lass lieber den Service im Hintergrund laufen und Dich über Änderungen informieren.
    Nutze statt permanent selbst zu fragen lieber public void requestLocationUpdates (long minTime, float minDistance, Criteria criteria, PendingIntent intent)
    Setz die Zeit meinetwegen auf 10 Sekunden oder so. Setz die Distanz aber auch auf was Sinnvolles, 25 Meter oder so.
    Dann bekommst Du wenigstens keine Info, wenn der Nutzer an der Ampel oder im Stau steht, vor dem Schaufenster hängen geblieben ist oder weil das GPS mal ein bisschen in der Gegend herumgependelt hat.
    Es sei denn, Du willst das. Dann setz die Distanz auf 0 und Du bekommst weiterhin stumpf alle 10 Sekunden Deine Info.


    Hinzu kommt, dass sich das GPS dann auch nicht abschaltet, da Du ja freudig die Informationen abfragst.


    PS: Den Punkt 'und hochlädt' halte ich allerdings für fragwürdig. Alle 10 Sekunden Daten auf irgend einen Server pumpen würde ich ja sein lassen.
    Lieber sammeln und das Betriebssystem dann bei der nächsten vom User initiierten Netzwerkaktivität (Mails lesen, WhatsApp tippen, Facebook gucken) die gesammelten Daten hochpumpen lassen. Denn alle 10 Sekunden Datenverbindung aufbauen, ein paar Byte rüberschicken und dann wieder abbauen kostet wirklich viel Energie.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Wie stellt Dein Livetracking denn dar, wenn der Nutzer fünf Minuten an der Fußgängerampel steht, sich also 30x die Position nicht verändert* hat?
    Im Übrigen glaube ich nicht, dass das Tracking so dermaßen live sein muss, dass Du das alle 10 Sekunden hoch laden musst. Vielleicht läuft eh Spotify mit und Du kannst das bequem über das System regeln lassen.
    Vielleicht hat der Nutzer auch 'mobile Daten' deaktiviert, um sein Kontingent zu schonen. (Mache ich beispielsweise regelmäßig)
    Dann ist einerseits Deine Livetracking Idee hinfällig und andererseits kommen die Daten dann nie auf einen Server.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!