2012-09-05 14 views
12

Sto cercando di capire quale formato l'output proviene dal comando getevent nella shell di adb.Qualcuno sa cosa significa l'output di getevent?

Ad esempio, l'output appare così:

adb shell getevent -t | grep event1

La bandiera -t fornisce un timestap e grep è quello di filtrare i messaggi ai soli eventi del touch dello schermo.

22779-197145:/dev/input/event1: 0003 003a 00400001

22779-197999:/dev/input/event1: 0003 0039 82c30a97

22779-218477:/dev/input/event1: 0003 003a 00390001

22779-219301:/dev/input/event1: 0003 0039 82c30aa4

22779-230623:/dev/input/event1: 0003 003a 002f0001

012.351.

22.779-231.416:/dev/input/event1: 0003 0039 82c10aae

22779-242769:/dev/input/event1: 0003 003a 00190001

22779-243623:/dev/input/event1: 0003 0039 82c60ac1

22779-253328:/dev/input/event1: 0003 003a 00000002

22.779-254.213:/dev/input/event1: 0003 0039 82da0ae4

22779-415590:/dev/input/event1: 0003 003a 00000000

22.779-416.444:/dev/input/event1: 0003 0039 800b1549

Il problema è che non ho idea di come elaborare queste informazioni. Mentre l'ultimo campo dei secondi si alterna tra due codici (che è stato suggerito per corrispondere ai valori X e Y), l'ultimo campo sembra contenere numeri enormi o molto piccoli.

Inoltre, il timestamp è anche estraneo a me. Mi chiedo se la parte dopo il trattino sia di nanosecondi?

Qualcuno sa dove posso scoprire il formato di queste cose?

+2

Non molte informazioni su GetEvent purtroppo ... Hai letto http://source.android.com/tech/input/getevent.html? – shkschneider

+0

Sì, sì, grazie. Ho finito per dover modificare il codice sorgente di Android per ottenere le informazioni di cui avevo bisogno in un formato che ho capito. – pypmannetjies

risposta

11

/dev/input/eventX viene utilizzato dal sottosistema del kernel linux evdev che è generico per gli eventi di gestione del livello di evento di ingresso e lo passa timestamp alle app. Si può provare questo per ottenere l'output leggibile più umano su quello che sta succedendo Android con getevent strumento, in questo modo:

$ adb shell getevent -lp /dev/input/event1 

per ottenere tutti getevent 's opzioni, fai:

$ adb shell getevent --help 

Potete leggere ulteriori informazioni su getevent strumento here e su evdevon Wiki.

In base alle origini del kernel, evdev utilizza il formato orario a risoluzione nanosecondo (ktime) e le origini sono in linux/next/include/linux/ktime.h o here, se si desidera visualizzarlo online.

+0

grazie avrò un aspetto – pypmannetjies

+3

[fonti getevent] (http://code.metager.de/source/xref/android/4.0.4/system/core/toolbox/getevent.c#645) potrebbe essere utile anche. –

+0

[Il tuo link] (https://source.android.com/tech/input/getevent) sembra essere morto. C'è nuova documentazione ovunque? –

0

Non sembra che i touchscreen siano stati creati nello snippet o che x e y non siano stati registrati.

Di solito, X coordinate per touch screen sono sotto 0003 0035 e Y è sotto 0003 0036 mentre 0003 0039 di solito è per il dito verso il basso (con l'ultimo campo guardando più come 00000000) e per il dito verso l'alto (con l'ultimo campo anche più simile ffffffff).

Non esattamente quello che è 0003 003a ma sembra di poca importanza e non è sicuramente il X o Y esadecimale.

Inoltre, il timestamp viene misurato in secondi. La sezione prima del trattino nel timestamp rappresenta Unix Epox il 1 ° gennaio 1970 a UTC e il timestamp dopo il trattino diventa una data in base ai secondi trascorsi dalla data e ora di cui sopra.

Speranza che aggiunga un po 'più di chiarezza.

Problemi correlati