Skip to main content

How to set alarm when mobile has been idle using android?



Hi I want to set alarm when the phone hasn't been touched. If the screen hasn't been touched for nearly 2 minutes, the alarm sound would be raised. How can I do this? Can anybody help me? Thanks in advance.





Source: Tips4all

Comments

  1. Pass the AlarmService through out the below code. This will find how long your device has been in idle.

    idle.java

    Handler hl_timeout = new Handler();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try{
    hl_timeout.postDelayed(DoOnTimeOut, 15000);
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    }

    // Toast
    Thread DoOnTimeOut = new Thread() {
    public void run() {
    try{
    Toast.makeText(getApplicationContext(), "System is idle", Toast.LENGTH_LONG).show();
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    };

    @Override
    public void onUserInteraction()
    {
    super.onUserInteraction();
    //Remove any previous callback
    try{
    hl_timeout.removeCallbacks(DoOnTimeOut);
    hl_timeout.postDelayed(DoOnTimeOut, 15000);
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    }


    Hope this helps you.

    ReplyDelete
  2. You can create AlarmService to play sound even when application/device is idle

    Extend method onUserInteraction of Activity Class to reset timer and start again for two minutes.

    ReplyDelete
  3. If I understand your question correctly, you need to trigger an alarm, when there is no any user interaction happened within some time interval. And one of the main requirements, there is no your activity running in foreground. So the case with onUserInteraction doesn't work for you.
    In this case you still can receive updates on every user action if you make your own AccessibilityService.

    Add this to your manifest to declare the service:

    <service android:name=".MyAccessibilityService">
    <intent-filter>
    <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    </service>


    And your service implementation should look similar to this:

    public class MyAccessibilityService extends AccessibilityService
    {

    @Override
    public void onServiceConnected() {
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    // we are interested in all types of accessibility events
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    // we want to receive events in a certain interval
    info.notificationTimeout = 100;
    setServiceInfo(info);

    Log.e("ALEX", "service connected!");
    }
    @Override
    public void onAccessibilityEvent(AccessibilityEvent arg0)
    {
    Log.e("ALEX", "Event happened!");

    }
    }


    Now any time user touches the screen for example, you will get onAccessibilityEvent() triggered and will be able to restart a timer which will launch your Alarm.

    HOWEVER, this approach has one disadvantage: in order to make it working, you will need to go to the phone settings -> Accessibility and enable your application there. Otherwise, system will not launch your service.

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.