AVDでスワイプジェスチャ(たとえば、左と右)をシミュレートするにはどうすればよいですか?それは可能ですか?(Android開発者ガイド-エミュレーター でそれらを見つけることができません...
PS:Android 2.2、APIレベル8のデバイス設定で「タッチスクリーンサポート」を「はい」に設定しています
AVDでスワイプジェスチャ(たとえば、左と右)をシミュレートするにはどうすればよいですか?それは可能ですか?(Android開発者ガイド-エミュレーター でそれらを見つけることができません...
PS:Android 2.2、APIレベル8のデバイス設定で「タッチスクリーンサポート」を「はい」に設定しています
マウスをクリックアンドホールドして動かすだけで、目的のモーションを作成できます。
より簡単な方法の1つは、録音と再生です。
getevent
のコマンド出力 を処理する代わりに、結果を送信するのsendevent
が非常に遅くなります。AVDと同じAndroidバージョンの実際のデバイスからのジェスチャーを盲目的に記録し、記録されたデータを入力バッファーにストリーミングしたところ、デバイスをだますことに成功しました。
実際のデバイスのタッチ入力は、次の方法でコピーできます。
コマンドを使用しdd
て、adbシェルでを実行しますdd if=/dev/input/event2 of=/sdcard/left
。これにより、すべてのタッチ入力データが/sdcard/left
ファイルにバッファリングされます。
シミュレートしたいジェスチャーを実行します(スワイプ)。
これで(/sdcad/left)
、実際のタッチによって生成されたデータが入力されます。コマンドを終了できますdd
(ctrl + c)。
実際のデバイスからAVD内の任意の場所にファイルを移動します(/sdcad/left)
。
AVD adbシェルで、dd if=/sdcard/left of=/dev/input/event2
ビオラ!シミュレートされたタッチイベントが発生します。
注:私のデバイスでは、タッチイベントを含むファイルは/dev/input/event2
、デバイスごとに異なる可能性があるため、最初に試行錯誤を行うことができます。
つまり、同じデバイスで録音して再生する場合は、次のようになります。
dd if=/dev/input/event2 of=/sdcard/left
本当のタッチをしてください
dd if=/sdcard/left of=/dev/input/event2
手順3を必要なだけ繰り返します。
入力イベントを記録し、エミュレータで再生するには、adbshellgeteventとadbshelsendeventを使用します。これは、理解するのが少し難しく、getevent出力の16進値を10進数に変換する必要がありますが、非常に便利です。
tl; dr:ユーザー入力処理をオンラインにするのが本当に遅いという問題があると、うまくいかないと感じるかもしれません。それを10分間いじっても機能しない場合は、何か問題がありますが、最初に10分間与えてください。
これが私の経験ですので、私がどのようにしてその結論に達したのかを見ることができます:
AVDManagerにデバイスを明示的に追加したことはありません-Studioがデバイスを追加してくれました。
(Hello World)アプリを実行すると、起動するまでにかなりの時間がかかりました。最初は何も起きていないようだったので、Studioのウィンドウの下部にある[Android]をクリックすると、実行内容がログに記録されていることがわかりました。
まだ多くの遅れがありました。1分ほど後、エミュレータがポップアップし、バックアップがないなどのメッセージが表示されました。さらに1分ほどすると、「充電中」と表示されたので、クリックしてドラッグしましたが、何も起こりませんでした。私はそれをさらに数回試しましたが、最終的に「充電」を「スワイプしてロックを解除」に変更することで応答しました(私はそう思います)。そこで、クリックドラッグをさらに数回試しましたが、ドラッグが登録されていないようです。最後に、カメラ(ソフトウェア)ボタンをマウスで押すと点灯するのに気づいたので、それをクリックしてから、カメラに入り(白い円の小さな<をドラッグしたかクリックしたかはわかりません)、そこから私は何かをすることができました。