DeepSleep verhindern

  • Hi,


    erste Frage: Gibt es keine Suchfunktion in diesem Forum oder bin ich blind?


    Jetzt zum eigentlichen Problem.


    Ich habe eine Test-App die einen Service aufruft und die Location Änderungen registriert und dann eine Funktion aufruft. Bei dem Aufruf erfolgt dann auch eine Aktualisierung der Notificationbar. Dies funktioniert im Debug-Modus daheim vor dem Rechner auch ganz toll. Ich bekomme in der Notification die aktuelle Position angezeigt. Heute stand eine kleine Dienstreise an und ich wollte die Gelegenheit nutzen die Test-App mal nebenbei laufen zu lassen. Bei den Kontrollen war die Positionsangabe in der Notification auch ok, hatte soweit immer gestimmt (ca. alle 5-10min habe ich das Handy angemacht und geschaut). Dann habe ich das Handy beiseite gelegt und die Zeit verstrich. An meinem Zielort habe ich das Handy wieder angemacht und dann gesehen dass die Position überhaupt nicht stimmte, gute 50km Entfernung lag dazwischen. Einen kurzen Moment später wurde die Position richtig angezeigt.


    Ich vermute die App ist in den DeepSleep verfallen, OBWOHL ich der Meinung war dies zu verhindern.


    In der onCreate des Service mache ich folgendes:


    Java
    try		{			pm = (PowerManager) getSystemService(Context.POWER_SERVICE);			wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PARTIAL_WAKE_LOCK_for_LocationService");			wakeLock.acquire();		}		catch (Exception e)		{			pm = null;			wakeLock = null;			e.printStackTrace();		}



    und in der onDestroy hebe ich diesen Lock wieder auf. Auch in der AndroidManifest.xml habe ich


    Java
    <uses-permission android:name="android.permission.WAKE_LOCK" />



    stehen.


    In der Doku steht zwar nur etwas von der CPU für PowerManager.PARTIAL_WAKE_LOCK, jedoch gehe ich davon aus dass die ganzen Sensoren auch weiterhin laufen, da es sonst keine passendere Option gibt.


    Hat Jemand eine Idee was ich falsch mache? Oder was ich besser machen könnte?




    Viele Grüße
    redneb

  • Hoi,


    erste Frage: Gibt es keine Suchfunktion in diesem Forum oder bin ich blind?


    Kurz: Jep xD rechts oben das grüne Teil mit "Suchbegriffe eingeben" ist nicht zur Deko ... :P


    Zum Thema:
    Hab selbst keine Erfahrung damit ... aber ergoogeln lässt sich folgendes:


    Aus der Doku:

    Zitat


    PARTIAL_WAKE_LOCK


    Wake lock level: Ensures that the CPU is running; the screen and keyboard backlight will be allowed to go off.
    If the user presses the power button, then the screen will be turned off but the CPU will be kept on until all partial wake locks have been released.


    Von hier: http://stackoverflow.com/quest…when-device-goes-to-sleep
    und hier: https://code.google.com/p/android/issues/detail?id=10931

    Zitat


    If the wakelock is PARTIAL, the listener will not receive any cell location
    updates. If the wakelock is SCREEN_DIM, the listener WILL receive
    updates.


    Also entweder Bug oder so gewollt, wie auch immer schaut so aus, als würdest du wohl den PARTIAL_WAKE_LOCK ersetzen müssen.



    Gruß,
    Matze

  • Kurz: Jep xD rechts oben das grüne Teil mit "Suchbegriffe eingeben" ist nicht zur Deko ...

    Oh man, Danke! So weit oben habe ich gar nicht geschaut :D


    Und nochmals Danke!



    Die Konstante SCREEN_DIM habe ich auch in der Doku gesehen, aber nicht verwendet da diese ab API17 veraltet ist und ich den Beschreibungstext anders interpretiert habe als er wohl gemeint ist. Ich werde diese Konstante mal ausprobieren.

  • Also ganz das Wahre ist es leider nicht mit dem SCREEN_DIM, verhält sich so wie man es vermuten würde. Der Bildschirm bleibt definitiv an, wird jedoch abgedunkelt. Der Sensor scheint nicht abgeschalten zu werden, jedoch geht es heftig auf den Akku.


    Ich werde es jetzt mal mit dem AlarmManager versuchen, indem ich dann alle 5 Minuten einen Broadcast sende. Vielleicht kann ich die Sensoren ja so "wach" halten.


    Hat Jemand vielleicht noch andere Ideen? Diese ganzen Sport Tracking Apps, die die Strecke aufzeichnen, die müssen das ja auch irgendwie hinbekommen haben. Ich habe noch gut zwanzig offene Tabs zu dem Thema die ich noch nicht gelesen habe, jedoch von den bereits gelesenen wiederholen sich die Vorschläge immer und immer wieder.



    Viele Grüße
    redneb

  • Hoi,


    man liest an der ein oder anderen Stelle, dass es wohl Geräte-Abhängig ist, ob das GPS an bleibt, wenn das Display aus ist oder nicht. Sowas hört man natürlich sehr ungern aber das ist leider nun mal so bei Android.


    Kann dir anbieten das mal auf meinen 3 Geräten zu testen (Samsung Galaxy S4, Samsung Galaxy Nexus, Asus Nexus 7) aber im Zweifel hilft es dir wohl auch wenig, da du es ja auf deinem Gerät funktionsfähig haben willst.



    Gruß,
    Matze

  • Hi,


    danke für das Angebot. Bei dem S4 kann ich schon relativ klar sagen, dass es das Problem gibt. Im Debug-Modus scheint das keinen Unterschied zu machen. Ich bin noch nicht dazu gekommen mein neues "Verfahren" zu testen. Ich öffne jetzt via AlarmManager alle 10 Minuten eine Activity mit dem der Bildschirm angeschalten wird. Ich hoffe dadurch das GPS am Leben halten zu können. Sobald ich es testen konnte schreibe ich es hier nochmal.

Jetzt mitmachen!

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