我目前正在研究可在android中检索触摸屏数据的方式。
在我继续之前,该应用将用于研究目的,并将利用所有感官输入进行实验。该应用程序不适合公开发布。用户将知道他们的所有输入都受到监视。
我基本上想监视电话屏幕上的所有触摸输入,包括键盘按键等。我已经能够获得常规的触摸事件:
public override bool OnTouchEvent(MotionEvent e)
{
int x = (int)e.GetX();
int y = (int)e.GetY();
System.Diagnostics.Debug.WriteLine($"Touch detected at x:{x} y:{y}");
return base.OnTouchEvent(e);
}
但是在以下情况下不会调用此方法:
我希望能够获取手机屏幕上发生的任何触摸的触摸数据。我在下面提供了一个屏幕截图,该屏幕截图是我有兴趣捕获的屏幕水龙头。
使用默认键盘可以做到吗?我可能会使用Xamarin Android来实现此项目(因为我对Xamarin的经验比对Android的经验还多)。我非常希望尽可能保持香草味。
谢谢
答案 0 :(得分:0)
我已经能够“结合”一个完全适合我的需求的解决方案。该解决方案并不完美,需要将android设备连接到计算机,并且需要运行一系列脚本。
Android Touch Record Replay完全提供了将设备触摸数据提取到csv文件中所需的所有步骤。
要获取触摸事件数据,您必须执行以下操作:
./find_touchscreen_name.sh
如果这可行,请忽略下一步 adb shell getevent -lp
(您可能需要将shell
替换为exec-out
adb shell getevent | grep event<your_index>
标签的每个索引运行ABS_MT_TOUCH_MAJOR
并监视输出,确定哪个设备是您的触摸屏。human_readable_data.py
: 用法: python human_readable_data.py arg1 arg2
| Argument | Value | Example |
| -------- | ------------------- | ----------------------------------- |
| arg1 | touchscreen device | /dev/input/event7 |
| arg2 | csv output location | /Users/$user/Desktop/touch_info.csv |
现在,我们已经记录了我们的android触摸屏数据,以供进一步分析。
此解决方案不需要root用户的设备!