Android: Ayuda para crear un botón que produce el mismo resultado que pulsando la tecla hacia abajo en el D-Pad? (parte 2)
Pregunta
¿Por qué no funciona esto ?? Estoy tratando de crear un OnClickListener para un botón que produce el mismo efecto que pulsar la tecla "abajo" en el D-pad. Eclipse me da un error, diciendo: "No se puede hacer una referencia estática a los sendDownUpKeyEvents no estáticos método (int) de la InputMethodService tipo" Ayuda
!downButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
InputMethodService.sendDownUpKeyEvents(0x00000014);
}
Solución
Usted está tratando de invocar el método no estático de una manera estática. Es necesario obtener una instancia del servicio en primer lugar y luego invocar el método en la instancia. También la forma en que está haciendo la simulación de pulsación de tecla se ve incorrecta. UPD: Después de algo de investigación que he conseguido simular el evento clave, trate de:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
}
}).start();
Otros consejos
La misma solución, acaba de tomar un parámetro.
private void InjectKeys(final int keyEventCode) {
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(keyEventCode);
}
}).start();
}
Sólo tiene que llamar y pasar el KeyEvent.KEYCODE
al igual que InjectKeys(KeyEvent.KEYCODE_DPAD_DOWN);
Por favor, no me downvote o Upvote, mi respuesta es exactamente igual que la respuesta anterior, sólo lo modificó para utilizar parámetros.