【问题标题】:Intercept all touch data (including keyboard)截取所有触摸数据(包括键盘)
【发布时间】:2019-02-11 13:39:02
【问题描述】:

我目前正在研究在 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 的经验要多得多)。我更愿意尽可能保持原味。

谢谢

【问题讨论】:

  • 除非您具有 root 访问权限,否则您应该无法通过键盘进行触摸。没有第 3 方应用程序能够或应该能够做到这一点。没有办法,应该没有办法,root权限除外
  • @VladyslavMatviienko 好的,所以我需要 root 设备,那我该怎么办?做起来很简单吗?
  • 很遗憾,我无能为力。我只知道不root是不可能的。
  • @VladyslavMatviienko 好的,谢谢,我确实想我可能需要对手机进行 root。无论如何,它们将是测试手机,所以看不出这是一个大问题!

标签: android xamarin.android keystroke keylogger


【解决方案1】:

我已经能够将一个完美地满足我需求的解决方案“拼凑”起来。该解决方案并不完美,需要将安卓设备连接到计算机并运行一系列脚本。

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

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

  • 运行shell脚本./find_touchscreen_name.sh 如果可行,请忽略下一步
  • 运行命令adb shell getevent -lp(您可能需要将shell替换为exec-out
  • 通过对包含ABS_MT_TOUCH_MAJOR 标签的每个索引运行adb shell getevent | grep event<your_index> 并监控输出来确定哪个设备是您的触摸屏。
  • 触摸屏后调用 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

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

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

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2018-07-13
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多