Powermangement

GMoN

GMoN

Dauergast
394
Habe keine Ahnung, wieso das Powermangent von Android so kompliziert ist. Als Symbianprogrammierer brauchte ich mir darum keine Gedanken machen. Anwendungen laufen da solange, bis sie vom User beendet werden und die Betriebs und Standbyzeiten sind bei Symbian sogar eher besser.

Meine Anwendung sammelt GPS, Cell und Wifi Daten und gleicht diese ständig mit Datenbanken ab. Das soll solange passieren, bis der User die Anwendung beendet. Also brauche ich einen WakeLock und zwar den PARTIAL_WAKE_LOCK. Bis auf einige Events, die damit wohl auch nicht kommen, klappt das soweit. Nun möchte ich aber eine Option einbauen, dass der User das Display ständig anlassen kann. Ein SCREEN_BRIGHT_WAKE_LOCK scheidet aus, da hierbei der User unbeabsichtig das Programm mit der Powertaste stoppen könnte.

Also dachte ich mir, PARTIAL_WAKE_LOCK lassen und dann mit userActivity(when, noChangeLights) den Inacitivity Counter resetten. Dann sollte ja das Display angehen. Wenn man den Call in einen Timer alle 14 sec aufruft, müßte das Display ja immer an bleiben. Nur klappt das leider nicht. Was mache ich da falsch? Welchen Wert muss ich für "when" eingeben, die Beschreibung verstehe ich nicht.

when is used to order this correctly with the wake lock calls. This time should be in the SystemClock.uptimeMillis() time base.
Soll das eine Art verzögerter Wakeup sein? Unabhängig vom Timer und WakeLock bleibt schon der Aufruf im oncreate ohne Wirkung. Fehlermeldungen gibt es leider auch keine.

Code:
pm  = (PowerManager) getSystemService(Context.POWER_SERVICE);
pm.userActivity(1,false);
 
Was hat der screen lock mit der Powertaste zu tun? Insgesamt verstehe ich leider noch nicht was Du vorhast.
 
Hmm, mittlerweile habe ich gemerkt, dass es noch viel schlimmer ist. location updates für gsm und GPS funktionieren nur, wenn das Display an ist. Ein partial_wakelock reicht nicht. Also kann man keinen GPS Tracker realisieren, dafür müßte das Display die ganze Zeit an bleiben, was den Akku im Nu leersaugt. Wenn ich das ganze richtig verstanden habe :(

Ich will jede Sekunde die aktuellen Koordinaten und GSM Zelle aufzeichnen
, wie läßt sich das realisieren, ohne dass das Display die ganze Zeit an bleiben muss. Mit einem AlarmManger oder Service läßt sie dies wohl auch nicht realisieren.
 
Ein gutes Stück Batterie-schonender sollte SCREEN_DIM_WAKE_LOCK sein.

Ansonsten: Was genau spricht dagegen einen Background Service zu nehmen?
Hab ich in der Konstelleation noch nicht gemacht, aber zumindest wird sowas auch in der JavaDoc erwähnt:
Background services should be careful about setting a sufficiently high minTime so that the device doesn't consume too much power by keeping the GPS or wireless radios on all the time.

Würde mich interessieren ob das klappt.
 
Zurück
Oben Unten