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

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex