Hay algunas partes de la estructura que no están del todo claro para mí todavía. Soy muy conocido con el flujo de un evento de entrada (Kernel -> Eventhub -> InputReader -> InputDispatcher -> ...).Manipulación Android Key (marco)
Situación
(Requisitos: Mango. Teclas de entrada sin cambiar el marco Android) que quiero para controlar los eventos clave procedentes de un dispositivo (teclado/gamepad/controlador/...) pero hay son algunos requisitos Por un lado, no quiero cambiar el marco de Android. Esto significa, no quiero que se extiende a la WindowManagerPolicy
y sus funciones como interceptKeyBeforeDispatching
donde se está manejando la tecla de inicio. Esto daría como resultado el envío del evento clave a la capa de aplicación, lo que está bien. La desventaja es que tengo otro requisito difícil aquí. Ejemplo: Cuando estoy jugando Angry Birds y presiono mi GoToAlpha-botón en el dispositivo de entrada conectado, el alfa-aplicación tiene que empezar. Angry Birds no tiene ni idea de qué botón es GoToAlpha, no lo manejará/reconocerá y, por ejemplo, no se emitirá ningún intento para iniciar mi aplicación Alpha.
Pregunta
¿Hay una manera de manejar mi (personalizado) evento clave después de que se envió, a sabiendas de que la aplicación en primer plano no puede manejar la llave?
Mi (no) soluciones
Crear un servicio que se encargará de los eventos clave. Esto no es posible porque una aplicación como Angry Birds no se vinculará a mi servicio y el evento clave no será capturado dentro de mi servicio. Si me equivoco, proporcione más información :).
Crear una biblioteca externa, donde dejo que las actividades de mi aplicación a heredar de mi propia ActivityBase. Todos los eventos clave y su comportamiento predeterminado se pueden manejar aquí. A la baja, las aplicaciones existentes no admitirán mis eventos de clave personalizados porque no usan la biblioteca.
ampliar el marco estaría en mis ojos la solución más limpia, sino que dará lugar a no cumplir con mi obligación.
Cualquier ayuda o información útil sería apreciada
extra
Si la primera pregunta podría ser resuelto en una forma u otra .. Quiero personalizar mi
Intent
detrás del botón GoToAlpha. Esto significa .. Por por defecto se iniciará el Alfa-aplicación, pero después de que el usuario ha había modificado, la beta-aplicación se inició a partir de ahora .. Cualquier pensamientos?
Gracias
¿No sería raro si es posible capturar eventos clave de otras aplicaciones? Supongo que esto sería un riesgo de seguridad – Boy
Verdadero. Una vez que el evento clave deja el marco, se dirige a una sola aplicación y se maneja allí. Si no, se devuelve al marco. Esto significaría que no hay una solución que satisfaga mis dos requisitos. – DroidBender
En mi opinión, probablemente no haya forma, solo por el problema de seguridad: manejar eventos clave mientras su aplicación no tiene foco. Tal vez la única forma sería si implementa un teclado Android (no tengo conocimiento de eso)? Esto debería ser capaz de manejar eventos clave (y los usuarios también apuntan a este riesgo de seguridad cuando seleccionas un teclado de terceros) – Boy