Android: escucha la tecla de encendido

Estoy tratando de escuchar cuando se presiona el botón de encendido. En última instancia, me gustaría tener algún código ejecutado cuando el botón de encendido se presiona dos veces, para comprobar si la pantalla está bloqueada o desbloqueada. Actualmente tengo esto:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_POWER: { Toast.makeText(getBaseContext(), "Power button pressed", Toast.LENGTH_LONG).show(); return true; } case KeyEvent.KEYCODE_MENU: Toast.makeText(getBaseContext(), "Menu Button Pressed", Toast.LENGTH_LONG).show(); return true; } return super.onKeyDown(keyCode, event); } 

El código funciona bien para brindar por el keyevent de menú, pero no hace nada para el evento de tecla de encendido. ¿Algunas ideas?

Aunque no pude capturar la llave del hardware terminé siendo capaz de adivinar que la llave de la energía fue presionada usando un receptor de la difusión que escucha para saber si la pantalla está apagada o encendido. Solía:

  if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { //do something } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { //do something else } 

Yo era capaz de estar más seguro de que el botón de encendido estaba siendo presionado por tener una cuenta que el tiempo de espera después de un par de segundos. De esta manera tengo el usuario presione el botón de encendido tres veces para asegurar que el comportamiento adecuado.

AFAIK, no es posible para la tecla de Power .

Es posible que desee consultar esta respuesta: http://groups.google.com/group/android-developers/browse_thread/thread/a4db4def1bdaa8d9

He utilizado las anotaciones de Android "@Receiver" anotación.

Añada esto a su "@EActivity" anotado Actividad:

 @Receiver(actions = Intent.ACTION_SCREEN_OFF) protected void onPowerButtonPressed() { // add your code } 
  • Leer eventos de teclado en Android WebView
  • Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones
  • Escuchar Webview Key Events desde el teclado del software en la actividad de Android
  • Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
  • Android: escucha de las teclas duras en el fondo
  • Keyevent android teléfono bloqueado
  • Simulación de combinación de pulsadores de teclas del terminal ADB
  • Enviar una combinación de teclas (clave meta y clave) a través de la API de Android
  • ¿Qué desencadena (o genera) KeyEvent.ACTION_MULTIPLE?
  • Eventos clave en TabActivities?
  • ¿Por qué no se llama al método dispatchKeyEvent?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.