4

私はUIオートメーションを行っており、geteventを使用して画面タッチを保存できますが、sendeventを使用してこれを送信しようとすると、非常に長い時間がかかり、実際に入力を再生するのが難しくなります。

私はすでにスクリプトをデバイスにロードし、デバイス上でローカルにスクリプトを実行しようとしています(sendeventコマンドの束を含むスクリプト)。しかし、これはこれをわずかに悪化させただけです。これらのコマンドをより迅速に挿入する他の方法はありますか?

4

2 に答える 2

6

タッチのハンドラーは、デバイス間で異なる方法で実装されます。cat /proc/bus/input/devicesタッチハンドラーが実装されている場所を確認する必要があります。

adb shell geteventまた、デバイスを操作して操作し、インターフェイス名の出力を確認することもできます。

再生に時間がかかる理由は、sendeventバイナリがインターフェイスファイルを開き、データを書き込み、sendeventを呼び出すたびに閉じるためです。したがって、理論的には、sendeventコマンドが多数ある場合、バイナリはインターフェイスファイルを開き、データを書き込んで、コマンドごとに閉じます。

この問題を解決する方法は、/ system / core / toolboxの下にあるsendevent.cファイルを書き直して、再生中に1回だけファイルを開き、すべてのデータを書き込み、再生の最後に閉じることです。それは私にとって完璧に機能します!

于 2012-10-19T18:29:10.740 に答える
4

わかった。getevent / sendeventを使用する代わりに、adbシェル内のイベントインターフェイスから直接読み取ることができます。

dd if = / dev / input / event6 of = record1#記録する

dd if = ./ record1 of = / dev / input / event6#再生する

ただし、これは速すぎる可能性があります...

于 2012-10-14T17:19:24.690 に答える