我通过我的应用程序中的OnTouchListener()
跟踪视图中的触摸但由于某种原因,应用程序可以检测到的最大指针数随机从10减少到2.我可以通过快速重现该错误的唯一方法用多个手指点击屏幕,即使这样也不一致。
我使用下面的代码记录进入和离开屏幕的触摸的指针ID。日志跟踪指针最多可同时触及10个触摸,但是当出现上述错误时,日志最多只能显示2个指针ID。
这是我的Galaxy S6 Edge的硬件故障吗?有没有办法测试为什么新的触摸不会触发运动事件?
View.OnTouchListener touch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//check if user flung the screen
mDetector.onTouchEvent(event);
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
// get pointer index from the event object
int pointerIndex = event.getActionIndex();
// get pointer ID
int pointerId = event.getPointerId(pointerIndex);
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:{
Log.d(LOG_TAG, "Pointer down = " + Integer.toString(pointerId));
break;
}
case MotionEvent.ACTION_MOVE: {
int numberOfPointers = event.getPointerCount(); //fetch number of active pointers
for (int i = 0; i < numberOfPointers; i++) {
//do stuff
}
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
Log.d(LOG_TAG, "Pointer cleared = " + Integer.toString(pointerId));
break;
}
return true;
}
};
答案 0 :(得分:0)
从你的例子中不是很清楚,但似乎
return mDetector.onTouchEvent(event);
必须是最后一行(https://developer.android.com/training/gestures/detector.html)