Question Android: détecte par programme si l'appareil est doté d'un écran tactile matériel connecté


Je dois écrire un script pour détecter si l'écran tactile physique est connecté à mon appareil Android au moment du démarrage. J'ai essayé de lister le contenu du dossier /dev/input via adb et j'obtiens la sortie suivante:

root@q88:/dev/input # ls
event0
event1
event2
event3
event4
mice

Si je ne me trompe pas, event0 identifie l'écran tactile, mais il est visible dans les deux cas, l'écran tactile est connecté ou non.
Y a-t-il un moyen de détecter si l'écran tactile est connecté à l'appareil?

Merci d'avance.


21
2017-08-30 16:30


origine


Réponses:


Tu peux lire /proc/bus/input/devices à obtenir des détails sur vos périphériques d'entrée existants.

Selon le nom de votre matériel, vous pouvez faire quelque chose comme ça et vérifier s'il y a des sorties:

cat /proc/bus/input/devices | grep "Name=" | grep "Touch"

C'est la sortie complète de /proc/bus/input/devices:

I: Bus=0011 Vendor=0002 Product=0008 Version=2222
N: Name="AlpsPS/2 ALPS DualPoint TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input2
H: Handlers=mouse1 event2 ts1
B: EV=f
B: KEY=420 0 70000 0 0 0 0 0 0 0 0
B: REL=3
B: ABS=1000003

[...] (blank line, next device)

Le B devant signifie bitmap, N, P, S, U, H sont simplement les premiers   lettre dans la valeur du nom correspondant et moi pour ID. Dans l'ordre   mode:

  • I → @id: id du périphérique (struct input_id)      
    • Bus     → id.bustype
    • Vendor  → id.vendor
    • Product → id.produit
    • Version → id.version
  • N → nom de l'appareil
  • P → chemin physique de l'appareil dans la hiérarchie du système
  • S → chemin sysfs
  • U → code d'identification unique pour l'appareil (si l'appareil le possède)
  • H → liste des poignées d'entrée associées à l'appareil
  • B → bitmaps      
    • PROP → propriétés de l'appareil et bizarreries
    • EV   → types d'événements supportés par l'appareil
    • KEY  → touches / boutons cet appareil a
    • MSC  → divers événements pris en charge par l'appareil
    • LED  → leds présentes sur l'appareil
    • REL  → adresse relative
    • ABS  → adresse absolue

Pour tester si le périphérique est réellement connecté, vous pouvez essayer de simuler des événements et voir si vous obtenez des erreurs:

input tap [x] [y]

Android est livré avec un outil de ligne de commande en entrée capable de simuler divers événements d'entrée.

  • contribution → L'outil de ligne de commande pour envoyer des événements      
    • appuyez sur → l'action
    • [x] → coordonnée X sur l'écran
    • [y] → coordonnée Y sur l'écran

3
2017-09-02 14:18



Recherchez un nom de pilote pour le contrôleur tactile de votre appareil. Puis vérifiez son sysfs emplacement. Il y aura peu de fichiers mappés aux variables internes qui ont été remplies avec des données lues à partir du périphérique tactile physique lors de son initialisation. Par exemple, la plupart des contrôleurs à écran tactile ont un microprogramme pouvant être mis à jour et permettent d'interroger sa version actuelle.

Un de mes appareils utilise atmel_mxt_ts contrôleur tactile et son sysfs l'emplacement est /sys/bus/i2c/drivers/atmel_mxt_ts/1-004a/. Il y a un fw_version fichier dans ce dossier. Si l'écran tactile physique est connecté, ce fichier contiendra l'étiquette de microprogramme actuelle. Le fichier vide signifierait qu'il n'y a pas d'écran tactile.


2
2017-09-09 14:53