Android アプリの計測テストで使用するマルチタッチ イベント (ズーム、パンなど) をシミュレートする必要があります。1 つの方法は、実際の入力を模倣するMotionEventの対応するシーケンスを手動で生成し、それらを 1 つずつディスパッチすることです。その前に、そのようなシミュレーションを行う素晴らしい API はありますか? 過去に多くの人がこの問題に直面したと思います。Robotium Soloを調べていましたが、単一のポインターのタッチ/ドラッグしか提供していません。
そのような API がない場合、問題に取り組む最善の方法は何でしょうか? 参加している各ポインターのポイント (開始、終了) と期間のペアを受け入れる関数を作成することを考えていましたが、これはジェスチャを線形ポインターの動きに制限します。
public void twoFingerTouchEvent(
Point from1, Point to1, int duration1,
Point from2, Point to2, int duration2) {
if (from1.equals(to1) && from2.equals(to2)) {
// two pointer tap
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// WAIT min(duration1, duration2)
// DISPATCH_POINTER_UP
// WAIT abs(duration1 - duration2)
// DISPATCH_UP
}
else if (from1.equals(to1) || from2.equals(to2)) {
// one of two pointers dragged after tap
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// DISPATCH_MOVE for moving pointer every 3-5 pixels, account for duration
// DISPATCH_POINTER_UP
// DISPATCH_UP
}
else {
// two pointer drag
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// DISPATCH_MOVE for both pointers in alternating order every 3-5 pixels
// DISPATCH_POINTER_UP
// DISPATCH_MOVE for pointer with longer duration
// DISPATCH_UP
}
}