Problem mit Sleep/Wake des Devices

  • Hallo zusammen,


    3 Tage lang versuche ich nun schon folgendes Problem zu lösen:
    Meine App soll eine SlideShow per WebView auf einem Android laufen lassen. Diese soll zu einer bestimmten Uhrzeit starten und später wieder den Monitor in den Lock-Modus wechseln. Dies soll täglich passieren. Das meiste davon funktioniert auch schon nur halt das "Täglich wiederholen" läuft nicht wie es soll.


    Folgende Code Auszüge sollen verdeutlichen wie ich dies umgesetzt habe.


    Die dazu gehörigen receiver Klassen sehen wie folgt aus:

    Zu guter letzt das Manifest:

    Schön wäre es wenn es jetzt gar nicht geht oder komplett aber nö ne nein... es geht unregelmäßig. :cursing:
    Hier is die Ausgabe aus meinem Log:


    In der Ausgabe kann man sehen das es mal geht, dann mal wieder nicht und zwischen durch auch mal zu falschen Zeiten?!?! Eigentlich soll es (zu test zwecken) jede Minute den zustand wechseln.


    Ich verstehe einfach nicht woran es liegt. Ich habe es schon auf allen erdenklichen weisen probiert. Seit KitKat werden wohl alle Repeatings in Form von "setInexactRepeating" ausgeführt. Also hab ich es auch mal mit einem Handler versucht wo in der Run() Funktion "alarmManager.setExact(AlarmManager.RTC, calSetSleep.getTimeInMillis(), pendingIntentSleep);" gestanden hat.
    ...kein erfolg...
    Ich habe alle Constanten versucht, wie ELAPSED_REALTIME etc.
    ...kein erfolg...


    Als Vorlage wie man den AlarmManager nutzt habe ich z.B. folgenden Link benutzt https://www.sitepoint.com/sche…background-tasks-android/
    Ich habe aber auch schon so ziemlich alle anderen Seiten zu dem Thema besucht aber egal wie ich es drehe und wende...kein Erfolg X/


    Ich hoffe ihr könnt mir weiter helfen.


    Beste Grüße,
    Jerome

  • Läuft denn das Tutorial zuverlässig?
    Ich kann mir durchaus vorstellen, dass in den letzten zwei Jahren am Sleepmode herumoptimiert wurde und nicht mehr geweckt wird wenn Du es willst, sondern dein Weckwunsch aufgenommen und gesammelt wird und dann ab einer gewissen kritischen Masse an Weckrufen das System den Sleepmode verlässt.

    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!«

  • Hi,


    ich würde es mal mit der folgenden Zeil versuchen:



    Code
    ..setRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntend);

    AlarmManager.INTERVAL_DAY ist für ein tägliches Intervall vorgesehen.


    Gruß
    Michael

  • Guten Morgen,


    vielen Dank schon mal für eure Antworten.
    @ Marco, ob es zuverlässig läuft kann ich nicht sagen. Bei mir nicht, wenn ich die Kommentare unter dem Beitrag des Tutorials lese funktioniert es scheinbar bei anderen zuverlässig.
    Auf der Seite developer.android.com habe ich gerade folgendes gefunden:


    Note: Beginning with API 19 (KITKAT) alarm delivery is inexact: the OS will shift alarms in order to minimize wakeups and battery use. There are new APIs to support applications which need strict delivery guarantees; see setWindow(int, long, long, PendingIntent) and setExact(int, long, PendingIntent). Applications whose targetSdkVersion is earlier than API 19 will continue to see the previous behavior in which all alarms are delivered exactly when requested.

    Ich werde es gleich mal mit dem setWindow(int, long, long, PendingIntent) probieren und euch berichten ob es geholfen hat. Ich rechne aber nicht mit einer Überraschung :/


    @michael, in der fertigen Version habe ich den Befehl genau so vorgesehen wie du ihn geschrieben hast. Wie erwähnt nutze ich derzeit aber ein 2 Minuten Intervall um das Verhalten überhaupt testen zu können. 24h laufen lassen um da zu sehen das nicht geht ist halt schon hart zeit Verschwendung ^^. Ich habe es auch mal mit dem Intervall "AlarmManager.INTERVAL_FIFTEEN_MINUTES versucht in der Annahme das 2 Minuten ihn einfach zu schnell ist und er durcheinander kommt aber geändert hat es leider auch nix.


    Gruß
    Jerome

  • Verstehe.


    Evtl. ist es aber doch besser, ein tägliches Interval zu verwenden und dann eben etwas zu warten. Alternativ kann ich Dir noch das Tutorial unter https://developer.android.com/…ng/scheduling/alarms.html empfehlen.


    Gruß
    Michael

Jetzt mitmachen!

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