Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i have screen idle listener?

I need to use idle listener to listen the user is using the application or idle when the activity is alive. I need to do something when the user is not using the application more than ten seconds. How can i make it possible?

like image 811
arnp Avatar asked Dec 02 '11 07:12

arnp


1 Answers

Here is the idea how you can achieve this task:

Firstly you need a Runnable(), which will be Run when your timeout(e.g. 10 sec) occurs. Below is the Runnable():

private Runnable DoOnTimeOut = new Runnable() 
{
    public void run() 
    {
        // Do something Here
    }
}

Now, in your activity, you can call postDelayed for the DoOnTimeOut:

Handler hl_timeout = new Handler();

@Override
public void onCreate(Bundle b)
{
   hl_timeout.postDelayed(DoOnTimeOut, 10000); // The DoOnTimOut will be triggered after 10sec
}

Now, most important part is that when you see user interaction, you want to cancel the call to DoOnTimeOut and then again set the call for next 10 sec. Here is the Override method of your Activity for User Interaction:

@Override
public void onUserInteraction()
{
    super.onUserInteraction();
    //Remove any previous callback
    hl_timeout.removeCallbacks(DoOnTimeOut);
    hl_timeout.postDelayed(DoOnTimeOut, 10000);
}

I hope it will be helpful for you.

like image 65
Khawar Avatar answered Oct 06 '22 12:10

Khawar