come menzionato here, quando lo schermo si spegne, verrà chiamato il onStop()
dell'attività corrente. Devo controllare lo stato di attivazione/disattivazione dello schermo quando viene chiamato lo onStop()
del mio Activity
. quindi ho registrato un BroadcastReceiver
per queste azioni (ACTION_SCREEN_ON
E ACTION_SCREEN_OFF
) per registrare lo stato on/off corrente (e funzionano correttamente, ho effettuato l'accesso!).
ma quando spengo lo schermo e controllo lo stato on/off nel onStop
, si dice che lo schermo è acceso. perché? Penso che il ricevitore debba ricevere lo ACTION_SCREEN_OFF
prima che venga chiamato onStop
quindi cosa c'è che non va?come controllare lo stato di attivazione/disattivazione dello schermo in onStop()?
risposta
È possibile tenta di utilizzare servizio di sistema PowerManager per questo scopo, qui è l'esempio e official documentation (notare che questo metodo è stato aggiunto nel livello di API 7): Metodo
isScreenOn():
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
EDIT è deprecato livello di API 21. Si consiglia di utilizzare isInteractive invece:
boolean isScreenOn = pm.isInteractive();
http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()
ottimo Alessandro! il 'BroadcastReceiver' non ha ricevuto le azioni nel momento in cui volevo ma questo lo ha reso :) – Soheil
' pm.isScreenOn() 'è deprecato. –
@SuperThomasLab Cosa usare invece? –
- 1. Ottenere lo stato dello schermo usando ADB
- 2. Controllare lo stato di AutoResetEvent
- 3. CheckBox Android - Ripristino dello stato dopo la rotazione dello schermo
- 4. Come controllare l'orientamento dello schermo per iPhone nell'app Web
- 5. Come gestire diverse dimensioni dello schermo/risoluzione dello schermo durante lo sviluppo di un sito?
- 6. Android: come controllare se lo schermo viene toccato?
- 7. Verifica se onStop viene chiamato dall'interazione dell'utente o oscuramento dello schermo
- 8. Come posso controllare lo schermo del cellulare dal browser?
- 9. Controllare lo stato della batteria con NodeMCU?
- 10. Come controllare lo stato del cluster di Elasticsearch?
- 11. Altezza dello schermo senza barra di stato, actionBar e schede
- 12. Come ottengo l'altezza dello schermo in Android?
- 13. Ricaricamento dello schermo in corona
- 14. Come controllare lo stato dell'oggetto evento senza effettivamente cambiarlo?
- 15. Come controllare lo stato del server PostgreSQL Mac OS X
- 16. Cattura dello schermo in Haskell?
- 17. Objective-C: controllare lo stato del firewall in OSX?
- 18. ViewPager Android con scheda che non mantiene lo stato dopo la rotazione dello schermo
- 19. Controllare lo stato di Gearman Worker su una particolare macchina
- 20. Come ottenere lo schermo DPI in java?
- 21. Cattura lo schermo di iPhone con barra di stato inclusa?
- 22. Dimensioni dello schermo in Java
- 23. Cattura dello schermo
- 24. Android: la barra di stato impedisce lo schermo intero
- 25. Android ottenere le dimensioni dello schermo dell'orientamento dello schermo
- 26. Effetto dell'aggiornamento dello schermo
- 27. Valore di luminosità dello schermo in Android
- 28. Verifica dello stato di accesso lato client
- 29. Come ripristinare lo stato del layout della barra degli strumenti compresso dopo il cambio di orientamento dello schermo
- 30. dimensione dello schermo utilizzabile
"Penso che il ricevitore debba ricevere ACTION_SCREEN_OFF prima che venga chiamato onStop, quindi cosa c'è che non va?" - Non ho idea del perché lo daresti per scontato. Usa le istruzioni del 'Log', o punti di interruzione, per vedere quale viene chiamato per primo. Meglio ancora, ridisegnare la tua app per non preoccuparsi se 'onStop()' viene chiamato perché lo schermo è spento, rispetto a qualsiasi altro motivo. – CommonsWare
@CommonsWare l'app deve essere in grado di distinguere tra le diverse situazioni in cui 'onStop' viene chiamato in loro, quindi devo sapere se lo spegnimento dello schermo ha causato il richiamo di' onStop' o un'altra cosa. qualche soluzione migliore? – Soheil
"l'app deve essere in grado di distinguere tra le diverse situazioni in cui onStop viene chiamato in loro" - perché? Che differenza fa alla tua app se lo schermo è spento, o se l'utente ha premuto HOME, o se l'utente ha premuto BACK, o se l'utente ha ricevuto una chiamata in arrivo, o l'utente ha toccato una notifica, o l'utente ha fatto qualcos'altro che ha reso la tua attività non più visibile? Normalmente lo spegnimento dello schermo non è un caso speciale. – CommonsWare