【问题标题】:Android how to capture touch points location on regular time intervalAndroid如何定期捕获触摸点位置
【发布时间】:2015-04-27 01:50:23
【问题描述】:

如何仅在触发触摸事件时以固定时间间隔捕获触摸点位置。即只有在触发触摸事件后才触发时间间隔,并且在触摸事件终止时终止时间间隔。

现在我已经编写了代码来通过参考 android 开发者文档来捕获接触点。请建议如何修改代码以在规定的时间间隔内捕获触摸位置。

public boolean onTouchEvent(MotionEvent event) {

// get pointer index from the event object
int pointerIndex = event.getActionIndex();

// get pointer ID
int pointerId = event.getPointerId(pointerIndex);

// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();

switch (maskedAction) {

    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_POINTER_DOWN:
        {
            // We have a new pointer. Lets add it to the list of pointers
            PointF f = new PointF();
            f.x = event.getX(pointerIndex);
            f.y = event.getY(pointerIndex);
            // Do something
            break;
        }
    case MotionEvent.ACTION_MOVE:
        { // a pointer was moved
            for (int size = event.getPointerCount(), i = 0; i < size; i++) {
                PointF f = new PointF();
                f.x = event.getX(pointerIndex);
                f.y = event.getY(pointerIndex);
                // Do something
            }
            break;
        }
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_POINTER_UP:
    case MotionEvent.ACTION_CANCEL:{
       // trigger to stop the time interval 
    }
}
return true;
}

【问题讨论】:

    标签: android input timer touch


    【解决方案1】:

    实现一个 TimerTask 并在计时器任务遇到特定时间时设置一个标志,例如

            timer = new Timer();
            if (timer != null) {
                timer.scheduleAtFixedRate(new TimerTask() {
                    public void run() {
    
                     grabThePosition=true;
    
                    }
                }, 0, samplingInterval);
            }
    

    onTouchEvent 中检查标志并获取 x,y 位置然后重置标志。

    【讨论】:

      【解决方案2】:

      我的猜测是您想在 ACTION_POINTER_DOWN 触发时检查当前时间(系统或类似 Joda Time)并将其存储为按下的时间值。在 ACTION_MOVE 上,如果当前时间 - 按下时间 == 时间间隔,请记下该点。此时将按下的时间变量重新初始化为当前时间并重复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-29
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多