Android Multi-Touch Bug:最大指针数随机下降到2

时间:2017-09-07 02:25:35

标签: android ontouchlistener multi-touch samsung-mobile

我通过我的应用程序中的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;
        }
    };

1 个答案:

答案 0 :(得分:0)

从你的例子中不是很清楚,但似乎

return  mDetector.onTouchEvent(event);  

必须是最后一行(https://developer.android.com/training/gestures/detector.html