Android: escucha de las teclas duras en el fondo

Android proporciona algunos métodos de devolución de llamada que nos ayudan a manejar eventos clave dentro de las aplicaciones. ¿Pero qué sucede si quiero escuchar los eventos clave cuando mi aplicación se ejecuta en segundo plano? P.ej. Quiero escuchar para el evento de prensa largo en el botón de búsqueda para hacer una característica especial.

KeyEvents sólo puede ser manejado por Actividades, ya que son la interfaz para el usuario pulsando las teclas y sólo cuando están en primer plano. Incluso los servicios que se ejecutan en segundo plano no tienen la intención de reaccionar en la entrada del usuario.

Pero al utilizar un servicio puede tener una solución. Puede crear un servicio que responda a eventos de pulsación de tecla duros al registrar un BroadcastReceiver. Por ejemplo, en la aplicación de música AOSP, tienen un servicio ( MediaPlaybackService ) que responde a eventos de clave de volumen al registrar un BroadcastReceiver ( MediaButtonIntentReceiver ).

Aquí está el código donde registra el receptor:

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); ComponentName rec = new ComponentName(getPackageName(), MediaButtonIntentReceiver.class.getName()); mAudioManager.registerMediaButtonEventReceiver(rec); 

Esto funciona incluso si la aplicación Música no está en primer plano. Código de fragmento de esta respuesta.

  • Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones
  • ¿Cómo detectar pulsaciones de teclas de caracteres?
  • ¿Qué desencadena (o genera) KeyEvent.ACTION_MULTIPLE?
  • Leer eventos de teclado en Android WebView
  • Enviar una combinación de teclas (clave meta y clave) a través de la API de Android
  • EditText no recibe eventos clave TAB - stock soft vk
  • KeyCode en android es siempre 229
  • Para Emacs, viaje largo para usar la tecla CTRL en Android
  • ¿Por qué no se llama al método dispatchKeyEvent?
  • Android: captura los eventos clave "Hecho" y "Introducir" en el teclado virtual
  • Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.