Il mio requisito è: dopo che un messaggio GCM arriva, il dispositivo dovrebbe svegliarsi per visualizzare una notifica ad alta priorità. Il dispositivo dovrebbe accendere lo schermo su.qual è il modo corretto e non deprecato per riattivare il dispositivo?
Attualmente sto usando WakeLock per raggiungere questo obiettivo. Il metodo newWakeLock()
prevede un livello di blocco E un flag da passare (come il primo parametro, bit per bit o d).
Uso il flag PowerManager.ACQUIRE_CAUSES_WAKEUP
poiché fa esattamente ciò di cui ho bisogno. Tuttavia, sono un po 'frustrato per il livello di blocco. Quindi, secondo il docs, ho ottenuto le seguenti opzioni:
PARTIAL_WAKE_LOCK
- non compatibili conACQUIRE_CAUSES_WAKEUP
/non si accende lo schermo suSCREEN_DIM_WAKE_LOCK
- deprecatoSCREEN_BRIGHT_WAKE_LOCK
- deprecatoFULL_WAKE_LOCK
- deprecato
Il suggerimento FLAG_KEEP_SCREEN_ON
è completamente inutile in questa scena rio. Ho finito solo sopprimendo l'avviso deprecazione:
@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();
La domanda: esiste un modo affidabile non deprecato per riattivare il dispositivo nel caso descritto?
EDIT Non sto chiedendo soluzioni alternative per riattivare il dispositivo. La mia domanda è se questo è possibile svegliarsi il dispositivo dallo sfondo (senza correre Activity
) senza l'utilizzo di API ritirate
correlati: http://stackoverflow.com/questions/30246425/turning-on-screen-from-reciever-service –
@Mr_and_Mrs_D grazie per il link, ma la risposta accettata non è adatto per il mio caso, in quanto Non ho un oggetto 'Window' mentre l'app è in background e non sono in esecuzione' Attività'. Quindi, sto ancora cercando una risposta – Droidman