Standby punktuell verhindern

  • Hallo Leute,


    ich habe die Anforderung bekommen, dass meine App während bestimmte Funktionen laufen (z. B. der Benutzer drückt auf einen Button und es werden Daten vom Server abgerufen) der Screen immer an bleiben soll (setKeepScreenOn(true)). Nachdem die jew. Funktion durchgelaufen ist, soll der Dauer-Screen-On-Modus wieder deaktiviert werden (setKeepScreenOn(false)), so dass der Bildschirm entsprechend der im System eingestellten Zeit irgendwann wieder ausgeht.


    Meine Anwendung (läuft auf 2.3-Geräten) besteht aus einer einzigen Activity die ein FrameLayout enthält in das die Fragmente immer eingesetzt werden.


    Ich habe verschiedene Ansätze versucht die leider alle nicht funktionierten, weshalb ich mich jetzt an Euch wende:


    Im Manifest ist folgendes gesetzt:
    <uses-permission android:name="android.permission.WAKE_LOCK" />


    Versuch 1:

    Code
    public void setKeepScreenOn(boolean pOn){
    View view = getLayoutInflater().inflate(R.layout.activity_main, null);
    view.setKeepScreenOn(pOn);
    }



    -> Der Aufruf der Funktion setKeepScreenOn hat überhaupt keine Auswirkung




    Versuch 2:



    -> Der Aufruf der Funktion setKeepScreenOn hat überhaupt keine Auswirkung. mWakeLock.isHeld() ist false, obwohl das WakeLock zwischendurch nicht released wird.



    Versuch 3:

    Code
    public void setKeepScreenOn(boolean pOn){
    if (pOn){
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
    else{
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
    }


    -> Der Aufruf der Funktion setKeepScreenOn hat überhaupt keine Auswirkung. Wenn ich die Funktion setKeepScreenOn(true) testweise im onCreate aufrufe bleibt der Bildschirm immer an, auch wenn später wieder setKeepScreenOn(false) aufgerufen wird.



    Habt Ihr eine Idee wie ich die Problematik lösen kann?


    Gruß hs1

  • Jop, ich habe den Aufruf sogar wie folgt geändert (Tip in einem anderen Forum):


Jetzt mitmachen!

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