Comment Générer des touches par programmation Android
Dans mon application lorsque l'utilisateur appuie sur DPAD_LEFT, je veux générer deux DPAD_UP presses. Je sais que cela peut être fait en utilisant une méthode comme ceci:
@Override private boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
keyDownUp(KeyEvent.KEYCODE_DPAD_UP);
keyDownUp(KeyEvent.KEYCODE_DPAD_UP);
return true;
}
return super.onKeyDown(keyCode,event);
}
private void keyDownUp(int a) {
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN, a));
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP, a));
}
Mais, pour être en mesure d'utiliser "getCurrentInputConnection()" la méthode, j'ai besoin d'étendre InputMethodService et il est impossible à cause de mon application s'étend déjà à une autre classe. Est-il une autre façon de résoudre ce problème?
OriginalL'auteur sjor | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Créer une autre classe qui étend InputMethodService et de l'appeler à partir de votre application.
OriginalL'auteur Vladimir Ivanov
Si vous souhaitez générer un événement clé qui est transmis à travers les événements de pipeline et est entièrement gérée (les personnages ainsi que les touches spéciales telles que des flèches - résultant de changer le focus), vous devez puiser dans la base de choses. vous pouvez créer une mise en œuvre de la méthode d'entrée de service, mais c'est laborieux. Un peut plus simple est d'obtenir le gestionnaire de la vue actuelle de la hiérarchie et de transmettre un message comme ceci:
Simple 🙂
OriginalL'auteur n0sferat0k
OriginalL'auteur Hayden Thring
Je n'ai pas essayé (pas en ce moment, désolé), et il ne se sent un peu comme un hack, mais ne pourriez-vous pas faire quelque chose comme ceci:
Bien sûr, vous pouvez créer une autre classe et l'appeler à partir de votre application.
hmm, je vais voir si je test ce qui ne va pas plus tard
OriginalL'auteur Nanne