Idle API

Non-standard
This feature is not on a current W3C standards track, but it is supported on the Firefox OS platform. Although implementations may change in the future and it is not supported widely across browsers, it is suitable for use in code dedicated to Firefox OS apps.

This API is available on Firefox OS for internal applications only.

Summary

The Idle API is used to notify an app when the user is idle. This lets an app take action when the user is doing nothing with his device. The most common use case is to save battery power; in this case, it is commonly used in conjuction with the Power Management API.

Watching for an idle user

When an application wants to be notified when the system is idle, it must register an idle observer. An idle observer is an object that carries three properties:

  • A time property that defines the time, expressed in seconds, that must pass after the user's last action before the user is considered to be idle.
  • An onidle property, which is a function called when the user is considered idle.
  • An onactive property, which is a function called when the user becomes active after being idle.

Example: dimming the screen when the user is idle

In this example, an idle observer is set up that dims the screen's brightness to 50% when the user is idle for 10 seconds, and restores it back to 100% when the user is active again. A second observer is set up that turns off the screen when the user is idle for at least 15 seconds.

// NOTE: mozPower is part of the Power Management API

var fadeLight = {
  time: 10, // Ten seconds

  onidle: function () {
    // The user does not seem active, let's dim the screen down
    navigator.mozPower.screenBrightness = 0.5;
  },

  onactive: function () {
    // Ok, the user is back, let's brighten the screen up
    navigator.mozPower.screenBrightness = 1;
  }
}

var screenOff = {
  time: 15, // fifteen seconds

  onidle: function () {
    // Ok, the user had his chance but he's really idle, let's turn the screen off
    navigator.mozPower.screenEnabled = false;
  },

  onactive: function () {
    // Ok, the user is back, let's turn the screen on
    navigator.mozPower.screenEnabled = true;
  }
}

// Register the idle observers

navigator.addIdleObserver(fadeLight);
navigator.addIdleObserver(screenOff);

This code defines two idle observer objects: fadeLight and screenOff, then calls navigator.addIdleObserver() once for each of them to register them with the system. Applications can set up as many idle observers as needed.

If the application no longer needs to watch for the user to become idle, it can remove idle observers by calling the navigator.removeIdleObserver() method, as seen below:

navigator.removeIdleObserver(fadeLight);
navigator.removeIdleObserver(screenOff);

Specification

Not part of any specification yet; however, this API will be discussed at W3C as part of the System Applications Working Group.

See also

Document Tags and Contributors

Contributors to this page: teoli, Sheppy, ethertank, arkanciscan, Jeremie
Last updated by: SpencerG,