Meine Anforderung ist: nach einer Nachricht GCM sollte das Gerät aufwachen, um eine Benachrichtigung mit hoher Priorität anzuzeigen. Das Gerät sollte den Bildschirm auf schalten.Was ist die richtige, nicht veraltete Möglichkeit, das Gerät aufzuwecken?
Derzeit verwende ich WakeLock, um dies zu erreichen. Die Methode newWakeLock()
erwartet, dass eine Sperrstufe UND ein Flag übergeben wird (als erster Parameter, bitweise oder alsd).
Ich verwende PowerManager.ACQUIRE_CAUSES_WAKEUP
Flag, da es genau das tut, was ich brauche. Allerdings bin ich etwas frustriert über die Sperrstufe. So nach dem docs ich die folgenden Optionen bekam:
PARTIAL_WAKE_LOCK
- nicht kompatibel mitACQUIRE_CAUSES_WAKEUP
/den Bildschirm nicht einschaltenSCREEN_DIM_WAKE_LOCK
- veraltetSCREEN_BRIGHT_WAKE_LOCK
- veraltetFULL_WAKE_LOCK
- veraltet
Die vorgeschlagene FLAG_KEEP_SCREEN_ON
ist in dieser Szene völlig nutzlos Rio. Ich landete nur die deprecation Warnung Unterdrücken:
@SuppressWarnings("deprecation")
PowerManager.WakeLock screenOn = ((PowerManager) c.getSystemService(Context.POWER_SERVICE)).newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
screenOn.acquire();
mNotifyMgr.notify(mNotificationId, mBuilder.build());
screenOn.release();
Die Frage: Gibt es eine nicht-veraltet zuverlässige Art und Weise das Gerät im beschriebenen Fall aufwacht?
BEARBEITEN Ich frage nicht nach Workarounds, um das Gerät aufzuwecken. Meine Frage ist , ob dies möglich ist, das Gerät aus dem Hintergrund aufwachen (ohne laufenden Activity
) ohne Verwendung von veralteten APIs
Verwandte: http://stackoverflow.com/questions/30246425/turning-on-screen-from-reciever-service –
@Mr_and_Mrs_D danke für den Link, aber die akzeptierte Antwort ist für meinen Fall nicht geeignet, da Ich habe kein "Fenster" -Objekt, während die App im Hintergrund läuft und keine "Aktivitäten" ausgeführt werden. Also immer noch auf der Suche nach einer Antwort – Droidman