2012-09-05 19 views
12

私はadbシェルのgeteventコマンドの出力形式を調べようとしています。誰でもgeteventの出力を知っていますか?

はたとえば、出力は次のようになります。

adb shell getevent -t | grep event1

-tフラグがtimestapを提供し、grepが唯一のタッチスクリーンのイベントにメッセージをフィルタリングすることです。

22779から197145:の/ dev /入力/イベント1:0003 003A 00400001

22779から197999:の/ dev /入力/イベント1:0003 0039 82c30a97

22779から218477:の/ dev /入力/ EVENT1:0003 003A 00390001

22779から219301:の/ dev /入力/イベント1:0003 0039 82c30aa4

22779から230623:の/ dev /入力/イベント1:0003 003A 002f0001

22779から231416:の/ dev /入力/イベント1:0003 0039 82c10aae

22779から242769:の/ dev /入力/イベント1:0003 003A 00190001

22779から243623:の/ dev /入力/イベント1:0003 0039 82c60ac1

22779から253328:の/ dev /入力/イベント1:0003 003A 00000002

22779から254213:の/ dev /入力/イベント1:0003 0039 82da0ae4

22779から415590:の/ dev /入力/ event1:00033a 00000000

22779から416444:は/ dev /入力/イベント1:0003 0039 800b1549

問題は、私は、この情報を処理する方法が分からないということです。秒の最後のフィールドは2つのコード(X値とY値に対応することが示唆されています)の間で交互に表示されますが、最後のフィールドには巨大または非常に小さな数が含まれているようです。

さらに、タイムスタンプは私にとっては外国人です。ダッシュ後の部分がナノ秒であるのだろうか?

私はこれらのものの形式についてどこに知ることができますか?

+2

GetEventに関する情報があまりありません。悲しい... http://source.android.com/tech/input/getevent.htmlを読んでいますか? – shkschneider

+0

はい、ありがとうございました。私が理解した形式で必要な情報を得るために、Androidのソースコードを変更する必要がありました。 – pypmannetjies

答えて

11

/dev/input/eventXが使用されています。Linuxカーネルサブシステムは、イベントを処理する一般的な入力イベント層で、アプリケーションにタイムスタンプを渡します。あなたはこのように、geteventツールを使用してAndroid上で何が起こっているかにより人間が読める形式の出力を得るためにこれを試すことができます。

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

すべてgeteventのオプションを取得するには、実行します。

$ adb shell getevent --help 

あなたが読むことができますgeteventツールhereおよび約evdevon Wikiについての詳細。

カーネルソースによれば、それをオンラインで表示したい場合は、ナノ秒解像度の時刻形式(ktime)を使用し、ソースはlinux/next/include/linux/ktime.hまたはhereです。

+0

ありがとう私は見ています – pypmannetjies

+3

[geteventソース](http://code.metager.de/source/xref/android/4.0.4/system/core/toolbox/getevent.c#645)も便利かもしれません。 –

+0

[あなたのリンク](https://source.android.com/tech/input/getevent)が死んでいるようです。新しいドキュメンテーションはどこにありますか? –

0

あなたのスニペットでタッチスクリーンがタッチされたように見えないか、おそらくxとyが記録されませんでした。

通常、タッチスクリーン用X座標が0003 0035下にあるとYは、最後のフィールドで指まで(のためにも、より多くのように見える(最後のフィールドは、より00000000のように見えると)0003 0039ながら0003 0036が指ダウンのために通常の下にありますffffffff)。

0003 003aが何であるかはっきりしていませんが、それほど重要ではないようですが、それは確かにXまたはYの16進数ではありません。

また、タイムスタンプは秒単位で測定されます。タイムスタンプ内のダッシュの前のセクションは、1970年1月1日のUTCでのUnix Epoxを表し、ダッシュ後のタイムスタンプは前述の時刻と秒からの秒に基づく日付になります。

希望がいくらか明確です。

関連する問題