私はUIオートメーションを行っており、geteventを使用して画面タッチを保存できますが、sendeventを使用してこれを送信しようとすると、非常に長い時間がかかり、実際に入力を再生するのが難しくなります。
私はすでにスクリプトをデバイスにロードし、デバイス上でローカルにスクリプトを実行しようとしています(sendeventコマンドの束を含むスクリプト)。しかし、これはこれをわずかに悪化させただけです。これらのコマンドをより迅速に挿入する他の方法はありますか?
私はUIオートメーションを行っており、geteventを使用して画面タッチを保存できますが、sendeventを使用してこれを送信しようとすると、非常に長い時間がかかり、実際に入力を再生するのが難しくなります。
私はすでにスクリプトをデバイスにロードし、デバイス上でローカルにスクリプトを実行しようとしています(sendeventコマンドの束を含むスクリプト)。しかし、これはこれをわずかに悪化させただけです。これらのコマンドをより迅速に挿入する他の方法はありますか?
タッチのハンドラーは、デバイス間で異なる方法で実装されます。cat /proc/bus/input/devices
タッチハンドラーが実装されている場所を確認する必要があります。
adb shell getevent
また、デバイスを操作して操作し、インターフェイス名の出力を確認することもできます。
再生に時間がかかる理由は、sendeventバイナリがインターフェイスファイルを開き、データを書き込み、sendeventを呼び出すたびに閉じるためです。したがって、理論的には、sendeventコマンドが多数ある場合、バイナリはインターフェイスファイルを開き、データを書き込んで、コマンドごとに閉じます。
この問題を解決する方法は、/ system / core / toolboxの下にあるsendevent.cファイルを書き直して、再生中に1回だけファイルを開き、すべてのデータを書き込み、再生の最後に閉じることです。それは私にとって完璧に機能します!
わかった。getevent / sendeventを使用する代わりに、adbシェル内のイベントインターフェイスから直接読み取ることができます。
dd if = / dev / input / event6 of = record1#記録する
dd if = ./ record1 of = / dev / input / event6#再生する
ただし、これは速すぎる可能性があります...