2010-11-17 14 views

Respuesta

11

El sistema emitirá cuando la pantalla se enciende y apaga -

programa para escuchar a estos, se puede crear un BroadcastReceiver que escucha los eventos:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

que están enumerados en la documentación here:

Además, hay un tutorial sobre cómo responder a estos eventos que se pueden encontrar uso ful.

+5

Hay una diferencia entre tener la misma respuesta y la copia de uno. Hicimos lo mismo, la búsqueda de Google lo es todo: P –

+0

¡Lea el documento cuidadosamente! Esta respuesta realmente le dice si el dispositivo es "interactivo". Si la pantalla está bloqueada, el dispositivo no es interactivo. Solo 'android.hardware.display.DisplayManager' puede indicarle si el hardware de la pantalla está actualmente encendido. Sin embargo, eso probablemente requiere Android 5. – OneWorld

19

La manera más fácil es poner esto en su método MyApplication.onCreate():

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
registerReceiver(new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_OFF); 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_ON); 
     } 
    } 
}, intentFilter); 
+0

Gracias esto funciona bien y debe marcarse como la respuesta. – pmont

+0

¿Cómo y cuándo anular el registro del receptor en este caso? –

+1

Puede llamar a [unregisterReceiver()] (http://developer.android.com/reference/android/content/Context.html#unregisterReceiver (android.content.BroadcastReceiver)) en cualquier momento que desee. Pero suponiendo que coloque el código anterior en 'MyApplication.onCreate()', no tiene que hacerlo porque no hay función Application.onDestroy() (la clase 'Application' es única de esa manera; consulte los documentos oficiales o [ aquí] (http://stackoverflow.com/questions/17278201/android-ondestroy-or-similar-method-in-application-class) para más información). –

Cuestiones relacionadas