Android-USB-touchscreen-HID-Deskriptoren Problem
Werde ich versuchen zu beschreiben, mein problem so klar wie möglich. Ich werde versuchen, ein touchscreen-Gerät arbeitet mit Android. das Gerät ist ein USB-Gerät und ich habe es ordnungsgemäß in den verschiedenen Betriebssystemen (Windows, Mac OS X, Ubuntu). In Android 4.0.4 ich scheine zu sein, ein problem. Es gibt einige touch-Antwort, aber es ist nicht richtig. der touchscreen erweist sich als ein touchpad anstatt eines absoluten touchscreen, auch Berührungen sind nicht richtig auftreten.
Ich schaue mir die verschiedenen HID-Deskriptoren und habe die folgenden gefunden, die verursachen könnten ein Problem mit Android:
Schnittstelle 0 HID Report Descriptor Maus Element-Tag (Wert), Raw-Daten Usage Page (Generic Desktop) 05 01 Usage (Mouse) 09 02 Collection (Application) A1 01 Usage (Pointer) 09 01 Collection (Physical) A1 00 Die Nutzung der Seite (Digitizer) 05 0D Usage (Touch) 09 33 Verwendung Mindestens (Digitizer) 19 01 Nutzung Maximal (Digitizer) 29 01 Logical Minimum (0) 15 00 Logische Maximum (1) 25 01 Report Count (1) 95 01 Bericht Size (1) 75 01 Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 Report Count (1) 95 01 Bericht Der Größe (7) 75 07 Input (Cnst,Ary,Abs) 81 01 Usage Page (Generic Desktop) 05 01 Verwendung (X) 09 30 Usage (Y) 09 31 Logical Minimum (0) 15 00 Logische Maximum (1024) 26 00 04 Physische Minimum (16) 35 10 Physikalische Maximum (1024) 46 00 04 Einheit (Keine) 65 00 Berichts-Größe (16) 75 10 Report Count (2) 95 02 Input (Data,Var,Abs,NWrp,Lin,NPrf,Null,Bit) 81 62 Ende Sammlung C0 Ende Sammlung
Jetzt sieht es aus wie das Gerät, ist die Berichterstattung als Digitalisierer und ein touch-Gerät? Das Gerät ist nur einem einzigen Knopfdruck "zeigen und drücken" Gerät, und Berichte absoluten X-und Y-Koordinaten.
Frage ich mich, ob android verwirrt Sie diesen Bericht Lesen, und als solche lädt ein Digitalisierer/tablet-Konfiguration anstatt den touchscreen ein? Es gibt einige Hinweise hier http://source.android.com/tech/input/touch-devices.html, aber ich weiß nicht wirklich verstehen, wo diese Dinge berichtet wird, die/definiert?
Jegliche Hilfe würde sehr geschätzt werden. Ich kann senden Sie mehr info von HID-Berichte, wenn nötig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf meiner Analyse-ich gebe diese Anregung.
Nehmen Sie den Faktor der logischen maximalen physikalischen maximum für X und Y.
factorValue = Logical Maximum/Physica Maximale
Multiplizieren Sie diese factorValue mit dem raw-Koordinaten, die aus touch-Bildschirm und versuchen Sie es senden, um android.
In der Regel ist es entscheidend, um eine Maus-Gerät, das sendet, absolute Koordinaten. Zum Beispiel auf Linux, das wird nicht funktionieren wegen bugs und misdesigns in X11.
Ihre descriptor ist sicherlich falsch. Sie können sich nicht vermischen Maus und digitizer.
Es sind zwei verschiedene Geräte-Kategorien. Einen digitizer kann durch einen touchscreen oder einen Stift, aber keine Maus. Sie riskieren, dass ein Fahrer nicht wissen, was mit Ihrem Gerät zu tun. Ihr Deskriptor ist weder Fisch noch Fleisch.
Du vermischt verschiedene Dinge: Nutzung der Seite "Generische Desktop" mit der Nutzung der Seite "Digitizer".
Gehen Sie sicher, dass in meinem Projekt, die ich nicht verwenden eine hand-made-Deskriptor. Ich endlich geklont einem echten touchscreen von ELO Touchsystems. Das funktioniert auf allen Betriebssystemen, auf denen ich es getestet. Ich kann nicht sagen, ob es funktioniert auch auf Android.
Aber man kann einfach versuchen, mein descriptor:
http://www.codeproject.com/Articles/1001891/A-USB-HID-Keyboard-Mouse-Touchscreen-emulator-with