2010-08-23 15 views
6

Ich möchte eine App auf Android schreiben, um meinen GPS-Standort alle 5 Minuten auf eine externe Website hochzuladen. Dies muss die Batterielebensdauer so minimal wie möglich beeinflussen, aber es muss auch ohne Benutzerinteraktion funktionieren. (Hintergrund: Ich nehme an einem Ironman-Triathlon teil, der etwa 14 Stunden dauern wird und in naher Echtzeit gesendet werden soll, ohne mich um mein Telefon kümmern zu müssen.)Einmal alle paar Minuten einen Android-GPS-Standort abrufen

So Mein erster Gedanke ist, einen Dienst zu schreiben, der LocationManager.requestLocationUpdates() mit einer minTime von 5 Minuten verwendet, aber wird das das Gerät tatsächlich alle 5 Minuten aufwecken, damit mein Dienst seine Arbeit machen kann?

Es klingt wie ich würde auch AlarmManager.setInexactRepeating() verwenden müssen, um sicherzustellen, dass mein Dienst wach ist, während es seine Aufgabe abschließt, aber wie spielt das mit requestLocationUpdates()? Soll ich stattdessen minTime = 0 auf requestLocationUpdates() setzen, aber dann wieder schlafen gehen, sobald das nächste Update erhalten wird?

Jede allgemeine Anleitung, wie dies zu gestalten ist, wird sehr geschätzt. Ich bin ein kompetenter Java-Programmierer & wird Google Maps auf dem Server verwenden, um meinen Standort zu plotten, aber bin ziemlich neu in der Android-Entwicklung, so bin ich grundsätzlich auf der Suche nach einem High-Level-Plan, wie die Client-App zu gestalten.

+1

Ich hoffe, Sie haben einen guten wasserdichten Behälter für Ihr Handy! – Nick

+0

@Nick Yeah Ich bringe nur einen Plastikbeutel mit, aber der Wetterbericht ist klar! –

Antwort

1

Ihr Dienst muss ständig aktiv sein, wenn Sie Updates erhalten möchten.

http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

können Sie sagen, wie oft Sie mit MINTIME Parametern Standortänderung informiert werden möchten. Es verringert jedoch nicht den Batterieverbrauch. GPS ist aktiviert, es sei denn, Sie verwenden die removeUpdates-Methode, unabhängig davon, wie oft Sie Updates erhalten möchten.

Sie können einen anderen Ansatz verwenden: Aktivieren Sie GPS mit der obigen Methode, lesen Sie einen Wert, verwenden Sie die removeUpdates-Methode, warten Sie 5 Minuten und noch einmal. Die Verzögerung zwischen dem Aktivieren und dem erneuten Abrufen eines Standorts kann zwischen einigen Sekunden und wenigen Minuten liegen.

+0

Danke @ Radek-k, ich hatte diese Dokumentation gesehen, aber aus der Beschreibung ging ich davon aus, dass die Einstellung einer hohen MinTime tatsächlich Batterie sparen würde. Ihre Beschreibung macht zwar Sinn, aber vielleicht werde ich den Zyklus alle 15 Minuten wiederholen, nur um den Akku konservativer zu gestalten. –

+0

In jedem Ihrer Ansätze ist das GPS-Radio eingeschaltet, oder? Es könnte also ohnehin Strom verbrauchen. Wenn die Verzögerung zwischen dem Aktivieren und dem Zurücksetzen eines Standorts (Ihr zweiter Ansatz) zu gering ist, könnte es besser sein, sie beizubehalten (wie lange dauert es, bis ein GPS-Fix erhalten wird?) –

Verwandte Themen