Android 在窗口中记录所有触摸事件

Android 在窗口中记录所有触摸事件,android,touch,ontouchlistener,Android,Touch,Ontouchlistener,我正在为我的项目实现一个小型库,该库应该获取活动中的所有触摸事件(无论其RootView是如何填充的[按钮、文本框等等]),并记录它们的位置(x、y)。 这样做的目的是获得患者点击区域的热图(点击图/点击图)。测量用户如何与应用程序交互 我能够使用以下方法将TouchListener连接到DecorView: public class Sniffer extends Activity { View v = getWindow().getDecorView();//.getRootVie

我正在为我的项目实现一个小型库,该库应该获取活动中的所有触摸事件(无论其RootView是如何填充的[按钮、文本框等等]),并记录它们的位置(x、y)。 这样做的目的是获得患者点击区域的热图(点击图/点击图)。测量用户如何与应用程序交互

我能够使用以下方法将
TouchListener
连接到
DecorView

public class Sniffer extends Activity {

    View v = getWindow().getDecorView();//.getRootView();

    v.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            float x = event.getAxisValue(MotionEvent.AXIS_X);
            float y = event.getAxisValue(MotionEvent.AXIS_Y);

            Log.i("t...OUCH: ", x + " " + y);

            return false;
        }
    }
    );
}
但是,如果视图中填充了其他元素,这就不起作用[只有当布局完全为空时,这才有效]。 每当我单击子元素时,记录器就会停止工作

我还尝试直接在
活动的
onTouchEvent
内部实现,但它不起作用

有什么想法吗

PS:考虑到我所做的应该是UI开发和/或用户交互分析的常见问题,预先制作的应用程序/库指针非常受欢迎


PPS:为提供以某种方式过滤抽头以限制采集速率的最佳方式的用户提供额外积分(无需对设备要求太多-->不会因为我们正在获取和存储所有这些积分而减慢应用程序的速度)。

实际上,为了做到这一点,我采用了以下方式:

public class Sniffer extends Activity {

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        float x = event.getAxisValue(MotionEvent.AXIS_X);
        float y = event.getAxisValue(MotionEvent.AXIS_Y);

        Log.i("t...OUCH: ", x + " " + y);

        return super.dispatchTouchEvent(event);

    }
}
但我也在等待其他(更好的?)解决方案/扩展