2012-01-11 45 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(); 
} 
相關問題