一連のイベントを記録する

一連のイベントを記録する

私はCM13を実行しているHTC 10を持っています。ADBとSend Eventを使用してタッチイベントを送信しようとしています。これを送信した後:

adb shell
sendevent /dev/input/event6 3 57 0
sendevent /dev/input/event6 3 53 300
sendevent /dev/input/event6 3 54 400
sendevent /dev/input/event6 3 48 5
sendevent /dev/input/event6 3 58 50
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0

電話でクリックすると、showtouches がオンになっているため、タッチが開始されたことを確認できますが、電話でタッチはまだアクティブです。

私の読書に基づくとここそしてここ他の場所と同様に、私がしなければならないことは次のことだけです:

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0

あるいは単に

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 0 0

ただし、どちらのコマンドを実行しても、携帯電話のタッチは終了しません。

私はこれらすべてを電話機自体のシェル スクリプトに記述し、そのスクリプトを adb シェルから実行してみましたが、結果は同じでした。タッチは始まりますが、終わりません。

答え1

あなたの環境ではありませんが、私はこの問題を調べました。あなたと同じように、さまざまな記事が見つかります。それらは常に一部の人には機能するようですし、他の人には機能しないようです。電話のハードウェア/Android バージョン/SDK バージョンの組み合わせによって違いがあり、すべての設定に 1 つの解決策がないというのが私の結論です。

自分にとって何が効果的かを見つける必要があります。ソフトウェアのメジャー アップデートによって、常に開始点に戻される可能性があることを念頭に置いてください。

私が見つけた最も簡単な方法は、次のinput tap x yコマンドを使用することです:

adb shell input tap x y

すべてのinputバージョンにtapパラメータがあるわけではありませんが、引数なしで起動すると、使用可能なすべてのパラメータと構文が出力されます。

shell@m0:/ $ input
input
usage: input ...
       input text <string>
       input keyevent <key code number or name>
       input [touchscreen|touchpad|touchnavigation] tap <x> <y>
       input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
       input trackball press
       input trackball roll <dx> <dy>

もう一つの方法はイベントを取得画面をタッチしたときに発生するイベントを記録します。ここ:

一連のイベントを記録する

  1. ファイルにデータを記録するようにPCを設定する(/tmp/android-touch-events.log

    $ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
    
  2. 電話で何かをする
  3. PCでadbコマンドを停止しますctrl-c

記録されたイベントを再生する

このコマンドは16進数変換を行います。awk

$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent

Getevent はパラメータを 16 進数で表示しますが、入力は 10 進数でしか受け付けないという点に注意してください。上記のスクリプトはこれを修正しようとしています。

モンキーランナーもう一つのツールとして、ここ:

使用したい場合がありますモンキーランナーこのような:

$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)

ドラッグやアクティビティの開始などもできます。APIをご覧ください。 モンキーデバイス

参考文献:

関連情報