我目前正在从事一个研究项目,该项目涉及人们在 Android 设备上玩游戏。我希望能够编写一个记录加速度计和触摸事件的安卓应用程序。我希望我的用户能够玩愤怒的小鸟等游戏,同时记录他们的触摸数据。
我知道这种类型的数据收集可以从应用程序内部进行,但是可以从应用程序外部进行吗?(也许通过在后台运行的应用程序?)
如果这不可能,是否有替代方案?(我相信理论上我可以进入 android OS 源代码并实现这一点?)
我目前正在从事一个研究项目,该项目涉及人们在 Android 设备上玩游戏。我希望能够编写一个记录加速度计和触摸事件的安卓应用程序。我希望我的用户能够玩愤怒的小鸟等游戏,同时记录他们的触摸数据。
我知道这种类型的数据收集可以从应用程序内部进行,但是可以从应用程序外部进行吗?(也许通过在后台运行的应用程序?)
如果这不可能,是否有替代方案?(我相信理论上我可以进入 android OS 源代码并实现这一点?)
我知道这种类型的数据收集可以从应用程序内部进行,但是可以从应用程序外部进行吗?(也许通过在后台运行的应用程序?)
对于触摸事件,不,出于明显的隐私和安全原因。它曾经是可能的(研究术语“tapjacking”),但当前版本的 Android 最终阻止了这种行为。
对于加速度计事件,您可以记录它们,因为它们对于所有应用程序都是相同的。请记住,您的采样率可能与正在使用的应用程序的采样率不完全匹配。
我相信我理论上可以进入 android OS 源代码并实现这一点?
是的,尽管您需要将修改后的 Android 转换为 ROM 模块并将其安装在设备上。
不允许应用在受保护的设备(即尚未“root”的消费者手机/平板电脑)上执行此操作。
但是,根据您的需要,可以将开发工具连接到计算机。如果您可以在每次受控环境试验之前进行一些适度烦人的设置,我相信您可以在一些库存设备上通过使用 USB 电缆将 ADB 切换到 wifi 模式,然后通过无线 ADB 会话监控输入事件。看
http://source.android.com/tech/input/getevent.html
该文档似乎暗示需要“su”(这很奇怪,因为非 root 用户无法使用官方的“su”),但是它在许多库存设备上都可以使用。
您可能还想运行 logcat 来确定前台是什么应用程序。