拦截所有触摸数据(包括键盘)

问题描述 投票:-1回答:1

我目前正在研究如何在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);
}

但是在以下情况下不会调用此方法:

  1. 轻触视图中的另一个项目(不是视图本身,即按钮)。
  2. 键盘出现了

我希望能够获得手机屏幕上发生的任何触摸的触摸数据。我已经在屏幕上点击了我有兴趣捕捉的屏幕截图。

这可以使用默认键盘吗?我可能会使用Xamarin Android来实现这个项目(因为我有更多的xamarin经验而不是我的android)。我更喜欢尽可能地保持香草味。

谢谢

Screenshot of the touch events I want to intercept

android xamarin.android keystroke keylogger
1个回答
0
投票

我已经能够“躲避”一个完全符合我需求的解决方案。解决方案并不完美,需要将Android设备连接到计算机,并且需要运行一系列脚本。

Android Touch Record Replay提供了将设备触摸数据提取到csv文件中所需的所有步骤。

要获取触摸事件数据,您必须执行以下操作:

  • 运行shell脚本./find_touchscreen_name.sh如果这样可以忽略下一步
  • 运行命令adb shell getevent -lp(您可能需要替换shellfor exec-out
  • 通过为包含adb shell getevent | grep event<your_index>标签的每个索引运行ABS_MT_TOUCH_MAJOR并监视输出,确定哪个设备是您的触摸屏。
  • 一旦你有触摸屏调用python脚本: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 |
  • 记录您的触摸屏水龙头
  • 关闭python脚本(ctrl + c)
  • 打开输出csv

现在我们已经记录了您的Android触摸屏数据以供进一步分析。

此解决方案不需要root设备!

© www.soinside.com 2019 - 2024. All rights reserved.