2012-01-11 60 views
8

我需要检测用户与手机进行交互并在距离上次用户触摸屏幕60秒后重新启动我的应用程序。有可能做这样的事吗? 它必须作为PC的屏幕服务器。检测用户是否与手机交互?

回答

4

是可以做类似的事情吗?

只有当您的活动处于前台时,才能跟踪触摸事件。您无法了解系统中其他地方发生的触摸事件。

+0

我发现这个解决方案:http://stackoverflow.com/questions/4481226/creating-a-system-overlay-always-on-top-button-in-android和它似乎工作。我认为这不是一个好的,你怎么看? – Gabrielle 2013-06-12 13:55:59

+0

@Gabrielle:这对新设备无效。为了防止劫持攻击,*你*可以获得触摸事件(并且底层应用不会),或者*他们*可以获得触摸事件(并且你不能)。 – CommonsWare 2013-06-12 14:05:18

+0

你是对的,我在一个较新的设备上测试过,它不工作。谢谢! – Gabrielle 2013-06-12 14:13:47

7

ACTION_USER_PRESENT是一个广播动作,所以你应该可以写一个广播接收器来响应它并启动你的应用程序。请记住,ACTION_USER_PRESENT是当用户设备醒来后存在发送

(例如当 键盘锁了)。

我也刚刚遇到一个example广播接收机使用BOOT_COMPLETED广播动作启动应用程序启动。

1

根据android生命周期,如果用户按Home按钮或小键盘锁定onPause将被调用。所以做这样的事情。

@Override 
public void onPause() 
{ 
super.onPause(); 
Timer timer = new Timer(); 
TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     finish(); 
    } 
}; 
timer.schedule(task, 60000); 
} 

并且如果用户在60秒之前到来然后在onRestart()

@Override 
public void onRestart() 
{ 
super.onRestart(); 
timer.cancel(); 
timer.purge(); 
} 
相关问题