Android 앱의 계측 테스트에 사용할 멀티 터치 이벤트 (줌, 팬 등)를 시뮬레이트해야합니다. 한 가지 방법은 실제 입력을 모방 한 MotionEvent의 해당 시퀀스를 수동으로 생성 한 다음 하나씩 출력하는 것입니다. 그 전에 시뮬레이션과 같은 멋진 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
}
}
감사합니다! API <9의 멀티 터치 시뮬레이션 방법을 알고 있습니까? 이 메소드는 pointerCount를 허용하는 것으로 보이지만 한 포인터의 좌표 만 허용합니다. 따라서 필요한 이벤트를 얻는 데 사용 방법을 잘 모르겠습니다. public static MotionEvent get (long downTime, long eventTime, int 액션, int 포인터 카운트, float size, float xPrecision, float yPrecision, int 디바이스 아이디, int edgeFlags) – zavidovych