如何检测任何类型的用户交互?

gre*_*man 5 events android user-interaction

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


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

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

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

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

所以简而言之,当手机仍在桌面上时,我的方法不会被触发:-)请注意,交互是与整个手机,而不是我的应用程序,我不感兴趣用户输入字母"K",我是甚至没有兴趣用户输入的东西,我关心的是用户以某种方式使用手机.

顺便说一句.用户走路时听音乐的情况(口袋里的电话) - 这不是互动.

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

问题如何检测用户交互?

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

(缺乏)进展

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

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

Ero*_*rol 0

为此,您需要拦截与手机的物理交互。

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

对于物理按钮触摸,我建议你看看这个