5

我目前正在从事一个研究项目,该项目涉及人们在 Android 设备上玩游戏。我希望能够编写一个记录加速度计和触摸事件的安卓应用程序。我希望我的用户能够玩愤怒的小鸟等游戏,同时记录他们的触摸数据。

我知道这种类型的数据收集可以从应用程序内部进行,但是可以从应用程序外部进行吗?(也许通过在后台运行的应用程序?)

如果这不可能,是否有替代方案?(我相信理论上我可以进入 android OS 源代码并实现这一点?)

4

2 回答 2

4

我知道这种类型的数据收集可以从应用程序内部进行,但是可以从应用程序外部进行吗?(也许通过在后台运行的应用程序?)

对于触摸事件,不,出于明显的隐私和安全原因。它曾经是可能的(研究术语“tapjacking”),但当前版本的 Android 最终阻止了这种行为。

对于加速度计事件,您可以记录它们,因为它们对于所有应用程序都是相同的。请记住,您的采样率可能与正在使用的应用程序的采样率不完全匹配。

我相信我理论上可以进入 android OS 源代码并实现这一点?

是的,尽管您需要将修改后的 Android 转换为 ROM 模块并将其安装在设备上。

于 2012-12-19T20:44:12.793 回答
2

不允许应用在受保护的设备(即尚未“root”的消费者手机/平板电脑)上执行此操作。

但是,根据您的需要,可以将开发工具连接到计算机。如果您可以在每次受控环境试验之前进行一些适度烦人的设置,我相信您可以在一些库存设备上通过使用 USB 电缆将 ADB 切换到 wifi 模式,然后通过无线 ADB 会话监控输入事件。看

http://source.android.com/tech/input/getevent.html

该文档似乎暗示需要“su”(这很奇怪,因为非 root 用户无法使用官方的“su”),但是它在许多库存设备上都可以使用。

您可能还想运行 logcat 来确定前台是什么应用程序。

于 2012-12-19T23:00:46.687 回答