This página tiene un tutorial sobre exactamente lo que estás buscando.
código copiado de esa página (con el fin de convertir esto desde un enlace de sólo responder a algo de utilidad directa):
1) Crear una clase en su solicitud para recibir la intención. Por ejemplo, el siguiente receptor se encuentra solo y establece una variable estática para ser utilizado en la parte 2:
2) Modificar la actividad para recibir pantalla de eventos/OFF. Su receptor comprobará la variable estática de su receptor de radio para saber el motivo de la intención que acaba de recibir:
public class ExampleActivity extends Activity {
@Override
protected void onCreate() {
// initialize receiver
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
// your code
}
@Override
protected void onPause() {
// when the screen is about to turn off
if (ScreenReceiver.wasScreenOn) {
// this is the case when onPause() is called by the system due to a screen state change
System.out.println("SCREEN TURNED OFF");
} else {
// this is when onPause() is called when the screen state has not changed
}
super.onPause();
}
@Override
protected void onResume() {
// only when screen turns on
if (!ScreenReceiver.wasScreenOn) {
// this is when onResume() is called due to a screen state change
System.out.println("SCREEN TURNED ON");
} else {
// this is when onResume() is called when the screen state has not changed
}
super.onResume();
}
}
@Yaniv: "Necesito saber en mi solicitud cuando el dispositivo entra en el sueño/apagar la pantalla. " -- ¿por qué? El 99.999% de las aplicaciones de Android no necesitan esto. La única manera de hacerlo es asumir un comportamiento hostil para el usuario (por ejemplo, un servicio que se ejecuta constantemente). Por lo tanto, explique qué está tratando de lograr, para que podamos ayudarlo a encontrar una mejor solución. – CommonsWare