Flags setzen ohne Window

ui_3k1

ui_3k1

Gesperrt
197
Hallo,

ich habe einen Service der lediglich ein Widget darstellt. Die Daten erhält dieser Service von einem zweiten Service mittels Broadcast-Receiver und letztlich refresht ein Thread (im Widget-Service) dann das Widget.
Das funktioniert gut.
Nun möchte ich das Verhalten des Widgets so verändern, dass immer wenn es sichtbar ist (also der Service läuft), das Flag FLAG_KEEP_SCREEN_ON gesetzt ist. Habe schon versucht dem Intent, der den Widget-Service aufruft, das Flag zu übergeben und ebenfalls versucht das Flag im Service selbst zu setzen. Ohne Erfolg... Der Bildschirm schaltet nach der in den Einstellungen voreingestellen Zeit ab.
getWindow lässt sich innerhalb des Service nicht aufrufen und die WakeLock-Methoden sind seit API 13 teilweise nicht mehr "vorgesehen".

Jemand einen Tipp, wie man die es hinbekommt, dass sobald der Service läuft der Bildschirm aktiv bleibt?

Danke vorab!


Nachtrag: hab gerade noch schnell eine Lösung ausprobiert, von der Google allerdings abrät. Das funktioniert:
Code:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Wake Lock");

-> allerdings auch nur, wenn vom Broadcast-Receiver aufgerufen. In onCreate() des Service aufgerufen, funktioniert es wiederum nicht.
Weiß jemand den Grund?
 
Zuletzt bearbeitet:
Hallo,
hab jetzt zwar keine Lösung aus dem Tutorial, aber trotzdem war der Inhalt des Links interessant. Danke nochmal für den guten Link.

Nachdem ich die Parameter des WindowManager nochmal genauer studiert habe, ist mir mein "Fehler" aufgefallen.
Hier der funktionierende Code:
Code:
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | [B]WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,[/B] // <- den Kollegen hab ich gesucht
                PixelFormat.TRANSLUCENT);

Habe meine Frage wohl auch etwas dumm / verkompliziert gestellt^^
 

Ähnliche Themen

A
Antworten
1
Aufrufe
637
swa00
swa00
S
Antworten
7
Aufrufe
1.164
swa00
swa00
M
  • maksimilian
Antworten
6
Aufrufe
1.559
maksimilian
M
Zurück
Oben Unten