阅读:8129回复:5
Android7.1监听用户一段时间无操作
用户需求:1分钟没有任何操作,自动隐藏SystemUI
想问一下这个1分钟没有任何操作应该怎么判断? 我有2个思路: |
|
|
沙发#
发布于:2019-08-28 19:29
可以直接套用系统的休眠机制。
系统在达到规定时间,用户都没有操作,会触发进入休眠。 通过修改系统sleep_timeout的默认值来设置超时时间,以毫秒为单位,例如我要设置3分钟无操作即进入休眠,我可以在串口或者adb命令行下: settings put secure sleep_timeout 180000可以用一下命令来读取: settings get secure sleep_timeout 如果要预制,直接在SettingsProvider APP里面的xml修改默认值。 ========================================================================= 这里不详细讲了,具体怎么个流程,逻辑,怎么计算时间,我先不讲。到时候我会完整的发一个帖子介绍。我现在只说下具体的位置。 当超时后,会通过handle来执行这个函数。 private void handleUserActivityTimeout() { // runs on handler thread你可以在直接在上述函数中做处理,也可以在updatePowerStateLocked()中去判断当前的mDirty的DIRTY_USER_ACTIVITY位置为1的情况做处理。 |
|
|
板凳#
发布于:2019-08-28 19:58
我这个需求是固定1分钟的超时时间,不能直接用sleep_timeout吧?应该设置一个固定的1分钟的值,仿照休眠的计时方法,做一个自己的超时流程,进行触发
|
|
|
地板#
发布于:2019-08-28 20:00
|
|
|
4楼#
发布于:2019-08-30 11:49
感谢兄弟指点迷津,功能已经实现了。在PowerManagerService里面启动线程,计时,到了60秒就触发。userActivityNoUpdateLocked()方法里面计时重置。
|
|
|
5楼#
发布于:2019-08-30 17:23
优秀!!!
|
|
|