WebAPI/AlarmAPI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
mNo edit summary
Line 20: Line 20:


== Features ==
== Features ==
The Alarm API supports the following features:


* Web application developer can arbitrarily add multiple alarms and get a unique ID for each of them to be removed later.
* Web application developer can arbitrarily add multiple alarms and get a unique ID for each of them to be removed later.
Line 72: Line 74:
* mozilla.dev.webapi: [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/pkx1uz_pnhQ Do we need an Alarm API?]
* mozilla.dev.webapi: [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/pkx1uz_pnhQ Do we need an Alarm API?]
* mozilla.dev.webapi: [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/o8bkwx0EtmM System Intents]
* mozilla.dev.webapi: [https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.webapi/o8bkwx0EtmM System Intents]
== Related ==
Android references:
* [http://developer.android.com/reference/android/provider/AlarmClock.html AlarmClock]
* [http://developer.android.com/reference/android/app/AlarmManager.html AlarmManager]
Android sources:
* [http://androidxref.com/source/xref/frameworks/base/core/java/android/app/AlarmManager.java AlarmManager.java]
* [http://androidxref.com/source/xref/frameworks/base/services/java/com/android/server/AlarmManagerService.java AlarmManagerService.java]
* [http://androidxref.com/source/xref/frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp com_android_server_AlarmManagerService.cpp]


== See Also ==
== See Also ==
Applications related to the Alarm API:


* [[WebAPI]]
* [[WebAPI]]
* [[WebAPI/CalendarAPI]]
* [[WebAPI/CalendarAPI]]
* {{bug|755245}} for the System Message Handler implementation.
* {{bug|755245}} for the System Message Handler implementation.

Revision as of 06:33, 30 May 2012

Alarm API Specification

Goals

To provide DOM API access to the device alarm settings, which can schedule a notification or for an application to be started at a specific time. For example, some applications like alarm-clock, calendar or auto-update might need to utilize Alarm API to trigger particular device behaviors at specified time points.

Status

See bug 749551 for the Alarm API implementation (still under construction).

Proposers

Mounir Lamouri, Kan-Ru Chen and Jonas Sicking

Contributors

Gene Lian (IRC: gene)

Features

The Alarm API supports the following features:

  • Web application developer can arbitrarily add multiple alarms and get a unique ID for each of them to be removed later.
  • Web application developer can also specify customized JSON object data corresponding to each alarm setting.
  • All the alarms that have been set can be automatically restored even if a device reboot is encountered since the back-end service is maintained by an indexedDB database.
  • An alarm message will be fired when the system goes to its specified alarm time and can be handled by the System Message Handler.
  • Alarm behaviors are done by asynchronizing codes and multiple threads, which means clients are able to keep doing other processes when alarms are concurrently being added, removed, queried, listened and gone off.

Proposed API

There is an object in window.navigator named mozAlarms with the following interface, where the respectTimezone can be specified by either "honorTimezone" or "ignoreTimezone" and the data can save customized JSON objec data for each alarm setting.

 interface AlarmsManager
 {
   DOMRequest get();
   unsigned long add(in jsval date, [optional] in DOMString respectTimezone, [optional] in jsval data);
   void remove(in unsigned long id);
 };

Examples

Example use of the Alarm API for adding, getting and removing alarms in the device:

 var alarmId1 = navigator.mozAlarms.add(new Date("May 29, 2012 07:30:00"), "honorTimezone", { mydata: "foo" });
 var alarmId2 = navigator.mozAlarms.add(new Date("May 30, 2012 16:20:00"), "honorTimezone", { mydata: "bar" });
 var request = navigator.mozAlarms.get();
 request.onsuccess = function (e) { alert(JSON.stringify(e.target.result)); };
 request.onerror = function (e) { alert("error"); };
 navigator.mozAlarms.remove(alarmId1);
 navigator.mozAlarms.remove(alarmId2);

Example use of the System Message Handler for listening to the alarm messages and setting the corresponding callback behaviors:

 navigator.setMessageHandler("alarm", function (message) { alert("alarm fired!"); });
 navigator.hasPendingMessage("alarm");

FAQ

  • Why?
    • Answer.

Clients

Applications using the Alarm API:

Articles

Articles mentioning / discussing the Alarm API:

Related

Android references:

Android sources:

See Also

Applications related to the Alarm API: