2010-12-02 6 views
0

Je crée un pilote pour un composant d'entrée personnalisé qui tentera de transmettre des données au noyau en tant qu'entrée, que le noyau transmettra ensuite via le système d'exploitation et exposera à le niveau de l'application via MotionEvent. En regardant d'autres pilotes de périphériques, cela ressemble à la définition d'événements d'entrée via certaines des fonctions exposées dans input.h du noyau Android 2.2 (2.6.32) pourrait faire l'affaire, mais j'aimerais bien le confirmer. Avant de commencer ce chemin, j'essaie de mieux comprendre comment les entrées existantes, que ce soit à partir de l'écran, du trackball, etc., passent par le système d'exploitation. Le but ultime est de nous assurer que nous pouvons transmettre des données de l'appareil au niveau App avant d'investir trop de temps dans cette voie.Suivi du flux d'entrées/d'événements du pilote vers l'application

tête d'entrée de linux Kernal 2.6.32

http://lxr.free-electrons.com/source/include/linux/input.h?v=2.6.32

J'ai parcouru à travers les sources de classe Android, mais ne savez pas où regarder pour voir comment le système d'exploitation instatiates la classe MotionEvent qui peut être accessible via la méthode onTouchEvent() de la classe View. Quelqu'un peut-il me pointer dans la bonne direction en ce qui concerne la façon dont MotionEvent est peuplé par le système d'exploitation et comment le système d'exploitation obtient ces données du noyau?

Merci,

Paul

Répondre

0

premier lieu, je regardais dans des cadres/base/libs/ui/EventHub.cpp, il passera par/dev/input pour trouver les différents périphériques d'entrée sur votre plate-forme et quel "type" d'entrée ce sont.

Plus ...

L'étape suivante est dans les cadres/base/services/JNI/com_android_server_KeyInputQueue.cpp et cadres/base/services/java/com/android/server/KeyInputQueue.java.

Si tout ce que vous faites est la mise en œuvre de l'interface d'entrée pour un nouveau matériel, je ne pense pas que vous devez faire plus loin que cela ...

+0

Oui, je vous remercie, c'est un bon début ! Maintenant j'essaie de faire la connexion entre EventHub.cpp au Java MotionEvent ... j'ai passé des heures à creuser le code, je vois une classe appelée RawInputEvent qui déclare un tas de valeurs statiques qui semblent être partagées avec EventHub.cpp, mais Je ne peux pas déterminer comment MotionEvent (par rapport à la classe View) est passé dans View.onTouchEvent() –