versiones sistema pie operativo developer caracteristicas app android

pie - android sistema operativo



Escuchando por ACTION_SCREEN_OFF (1)

Estoy intentando iniciar un servicio que se ejecuta en segundo plano y está escuchando ACTION_SCREEN_OFF y cuando encuentra ACTION_SCREEN_OFF , comienza mi actividad.

Leí en algún lugar donde necesita crear un BroadcastReceiver porque ponerlo en el XML manifiesto no funciona. Sin embargo, no tengo idea de dónde empezar después de mucho buscar.


No puede declarar ACTION_SCREEN_ON y ACTION_SCREEN_OFF en el AndroidManifest.xml . Solo puedes atraparlos mientras tu actividad se está ejecutando.

Aquí hay un ejemplo.

El BroadcastReceiver :

public class ScreenReceiver extends BroadcastReceiver { public static boolean wasScreenOn = true; @Override public void onReceive(final Context context, final 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; } } }

La Actividad :

public class ExampleActivity extends Activity { private BroadcastReceiver mReceiver = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // initialize receiver final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); 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 Log.e("MYAPP", "SCREEN TURNED OFF"); } else { // this is when onPause() is called when the screen state has not changed } super.onPause(); } @Override protected void onResume() { super.onResume(); // only when screen turns on if (!ScreenReceiver.wasScreenOn) { // this is when onResume() is called due to a screen state change Log.e("MYAPP", "SCREEN TURNED ON"); } else { // this is when onResume() is called when the screen state has not changed } } @Override protected void onDestroy() { if (mReceiver != null) { unregisterReceiver(mReceiver); mReceiver = null; } super.onDestroy(); } }

Probablemente pueda resolver su pregunta escuchando estos eventos de un Service .