【发布时间】: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