我有一个仪器,我想用来测试我的应用程序,但我似乎无法得到捏缩放以正确模拟.这是我目前的代码.它的要点是:将手指1和手指2向下推,将它们彼此靠近移动,然后将它们两者释放.
private void performZoomTest(int numUpdates) {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
float x1 = 0;
float y1 = 0;
display main = activity.getwindowManager().getDefaultdisplay();
float x2 = main.getWidth();
float y2 = main.getHeight();
float xstep = x2 / (2 * numUpdates);
float ystep = y2 / (2 * numUpdates);
int id1 = 0 << MotionEvent.ACTION_POINTER_ID_SHIFT;
int id2 = 1 << MotionEvent.ACTION_POINTER_ID_SHIFT;
MotionEvent event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN + id1,
x1, y1, 0);
sendPointerSync(event);
event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN + id2,
x2, y2, 0);
sendPointerSync(event);
waitForIdleSync();
for (int i = 0; i < numUpdates; i++) {
eventTime = SystemClock.uptimeMillis();
Log.i("",Integer.toString(i));
x1 += xstep;
y1 += ystep;
x2 -= xstep;
y2 -= ystep;
event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_MOVE + id1,
x1, y1, 0);
Log.i("id1", Integer.toString(MotionEvent.ACTION_MOVE + id1));
sendPointerSync(event);
event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_MOVE + id2,
x2, y2, 0);
Log.i("id1", Integer.toString(MotionEvent.ACTION_MOVE + id2));
sendPointerSync(event);
waitForIdleSync();
}
eventTime = SystemClock.uptimeMillis();
event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_UP + id1,
x1, y1, 0);
sendPointerSync(event);
event =
MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_UP + id2,
x2, y2, 0);
sendPointerSync(event);
waitForIdleSync();
}
结果似乎是应用程序将两个事件视为不同,并且不将它们注册为单个事件.有没有更好的方法呢?
解决方法:
看看这里:https://stackoverflow.com/questions/522312/best-practices-for-unit-testing-android-apps
我认为使用标准Android框架无法进行多点触控单元测试.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。