【问题标题】:How to detect user interaction of any kind?如何检测任何类型的用户交互?
【发布时间】:2012-07-31 17:19:23
【问题描述】:

安全问题: 我现在不知道它是如何发生的,但是这个问题的读者会想到这个问题的解决方案是一种安全威胁。所以请记住,我感兴趣的所有数据都是测量用户/活动的时间。就这样。用户做了什么——我完全不感兴趣!


我需要的是非常简单的概念,但我找不到解决方案。我想运行一个进程(在后台)并监听用户交互。

所以,用户触摸屏幕 --> 我的方法被触发了。

用户解锁手机 --> 我的方法被触发了。

物理键盘上的用户类型 --> 我的方法被触发了。

所以简而言之,当手机仍然放在桌子上时,我的方法不会被触发 :-) 请注意,交互是与整个手机,而不是我的应用程序,我对用户输入字母“K”不感兴趣,我什至对用户输入的内容都不感兴趣,我只关心用户以某种方式使用手机。

顺便说一句。用户走路听音乐时的状态(手机放在口袋里)——这不是交互。

我正在寻找的是一个触发器——类似于INTERACTION_DETECTED,或者(相反地)一个设置为reportInactiveUser(10*1000) 的回调方法,如果用户处于非活动状态10 秒,它将被调用。

QUESTION如何检测用户交互?

目的:测量手动使用手机的时间。

(缺乏)进展

我发现BatteryStatsImpl 可以保存我需要的数据。它的实例由BatteryStatsService 保存,但是它不允许任何访问它,只有IBatteryStats 又只有一种有趣的方法——getStatistics 并且输出不包括用户活动计数器(或者它们都是零;我设置了所有权限)。所以,到目前为止——运气不好。

所有调用都必须通过反射进行,因为这些类无论如何都不可用;-)。

【问题讨论】:

  • 你试过看看这个问题吗? stackoverflow.com/questions/3757220/…
  • @maxko87,现在就做,非常感谢,看起来很有希望!
  • android 的基本设计目标让后台任务知道用户在做什么 - 除了一些特定的例外情况,后台任务的参与被认为是合法的.
  • @Macias - 这绝不是荒谬的。因为你不被认为有正当理由知道用户在做什么,所以让你知道他们在做什么(即使不知道是什么)的钩子数量很少,而那些确实存在的钩子正在逐渐被在较新的版本中关闭。例如,许多依赖解析日志作为解决与 android 设计者的愿景冲突的方法的应用程序在 JellyBean 中被拒之门外。您不必完全同意设计理念(几乎没有人完全同意),但反对它并不容易。
  • 在这里指责别人不会让你有任何收获。再读一遍你的问题。你说:“用户触摸屏幕-->我的方法被触发。用户解锁手机-->我的方法被触发。用户在物理键盘上输入-->我的方法被触发。”我不是编造他们的人。我将您定向到可以用来拦截它的库,并告诉您只能在应用程序上下文中使用它们。现在你回来了,声称你不想要它,而我正在想象我自己的世界里的事情。这里的人们试图通过告诉你不能做什么来帮助你。

标签: android events user-interaction


【解决方案1】:

您想为此拦截与手机的物理交互。

对于屏幕触摸,this package 会派上用场。 *您可以使用this 来监听屏幕上的手势。

对于物理按键触摸,我建议你看看this

【讨论】:

  • 如果您的应用程序在后台运行或没有您自己的服务,我认为您无法检测到它。否则,这将是一个非常适合控制手机的环境,而您不希望这样。
  • 不,安全威胁不在于用户玩手机,而在于您设计的应用程序,控制您在应用程序之外执行的操作。如果我在您的手机上有一个应用程序可以拦截每一次硬件按键触摸并自动将您连接到我的垃圾邮件网站,您会如何欢迎它。如果在您使用我的应用程序时发生这种恶意行为,您将能够检测到它,但如果周围没有应用程序并且我仍然能够读取您的系统范围的手势并在后台挖掘您的漏洞,您将如何识别威胁?
  • 为了简短起见——正如您已经指出的那样,由于安全原因,您的方法无法工作。如果我错了,请纠正我。
猜你喜欢
  • 2014-11-25
  • 2015-11-11
  • 2017-03-03
  • 2013-06-11
  • 2018-10-24
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多