¿Cómo registrarse para dormir en Android?

Estoy trabajando en Android 3.0 y tengo que saber en mi aplicación cuando el dispositivo se apaga / apaga la pantalla.

¿Cómo puedo registrarme a este intento / evento para poder ejecutar algunas acciones cuando esto suceda? ¿Hay alguna acción en BroadcastReceiver que notifique para esto?

Esta página tiene un tutorial sobre exactamente lo que estás buscando.

Código copiado de esa página (para convertir esto de una respuesta de solo enlace a algo directamente útil):

1) Crear una clase en su aplicación para recibir la intención. Por ejemplo, el siguiente receptor está solo y establece una variable estática que se utilizará en la parte 2:

public class ScreenReceiver extends BroadcastReceiver { public static boolean wasScreenOn = true; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { // do whatever you need to do here wasScreenOn = false; } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { // and do whatever you need to do here wasScreenOn = true; } } } 

2) Modifique su actividad para recibir eventos de activación / desactivación de la pantalla. Su receptor comprobará la variable estática en su receptor de emisión 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(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.