Sensor API: Difference between revisions
Jump to navigation
Jump to search
(5 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
interface SensorManager : EventTarget { | interface SensorManager : EventTarget { | ||
// Creates a new session to interact with a sensor | // Creates a new session to interact with a sensor | ||
SensorSession newSession(in DOMString sensorName,in optional SensorSessionOptions options) raises SensorNotFound; | SensorSession newSession(in DOMString sensorName,in optional SensorSessionOptions options) | ||
raises SensorNotFound; | |||
// The list of open sessions | // The list of open sessions | ||
attribute sequence<SensorSession> openSessions; | attribute sequence<SensorSession> openSessions; | ||
Line 26: | Line 27: | ||
interface Sensor : EventTarget { | interface Sensor : EventTarget { | ||
readonly attribute DOMString type; // Vocabulary to be defined ("Acceleration", "AmbientLight") | |||
readonly attribute DOMString | readonly attribute DOMString name; // ("Accelerometer", "Compass", "Thermometer") | ||
// ("Accelerometer", "Compass", "Thermometer") | |||
// Another method to retrieve capabilities?? | // Another method to retrieve capabilities?? | ||
}; | }; | ||
interface SensorSession : EventTarget { | interface SensorSession : EventTarget { | ||
readonly attribute Sensor sensor; | readonly attribute Sensor sensor; | ||
Line 46: | Line 46: | ||
attribute Function onError; | attribute Function onError; | ||
}; | }; | ||
interface SensorData { | interface SensorData { | ||
readonly attribute any value; | readonly attribute any value; | ||
}; | }; | ||
// New DOM Event 'sensordata' | // New DOM Event 'sensordata' | ||
interface SensorDataEvent : Event { | interface SensorDataEvent : Event { | ||
Line 57: | Line 59: | ||
in SensorData data); | in SensorData data); | ||
}; | }; | ||
interface SensorWatchOptions { | interface SensorWatchOptions { | ||
// High threshold. If the sensor value is higher a data event will be raised | |||
attribute any | attribute any highThreshold; | ||
attribute | // Low threshold. If the sensor value is lower a data event will be raised | ||
attribute double | attribute any lowThreshold; | ||
// Notify only when a relative change in the magnitude meausured by the sensor occurs | |||
attribute double relativeThreshold; | |||
// Interval at which values will be provided by the sensor (milliseconds) | |||
attribute double interval; | |||
}; | }; | ||
Line 68: | Line 75: | ||
Example of use | Example of use | ||
var accelerometer = navigator.sensor.newSession('Accelerometer') | <pre> | ||
var accelerometer = navigator.sensor.newSession('Accelerometer'); | |||
session.onSensorData = function(e) { | session.onSensorData = function(e) { | ||
window.console.log('New accelerometer data'); | window.console.log('New accelerometer data'); | ||
window.console.log('Acceleration along the x axis: ' + e.value.x); | window.console.log('Acceleration along the x axis: ' + e.value.x); | ||
} | }; | ||
var watchOptions = { interval | var watchOptions = { interval: 1.0 }; // Every one millisecond | ||
accelerometer.watch(watchOptions); | |||
</pre> |
Latest revision as of 15:06, 9 September 2011
Goals
Proposal for a new Sensor API. A generic API to retrieve values from sensors.
The Sensor API allows to retrieve values from sensors available from the device. It is intended to be compatible with existing concrete Web APIs that provide values from device sensors (http://dev.w3.org/geo/api/spec-source-orientation.html).
Author: José Manuel Cantera (Telefónica I+D)
Status
First draft provided
Proposed API
interface SensorManager : EventTarget { // Creates a new session to interact with a sensor SensorSession newSession(in DOMString sensorName,in optional SensorSessionOptions options) raises SensorNotFound; // The list of open sessions attribute sequence<SensorSession> openSessions; sequence<Sensor> listSensors(); // List the available sensors on the device attribute Function onSensorAvailable; }; interface Sensor : EventTarget { readonly attribute DOMString type; // Vocabulary to be defined ("Acceleration", "AmbientLight") readonly attribute DOMString name; // ("Accelerometer", "Compass", "Thermometer") // Another method to retrieve capabilities?? }; interface SensorSession : EventTarget { readonly attribute Sensor sensor; // Allows to watch (monitor) for the sensor void watch(in SensorWatchOptions options); // Finish monitoring session void endWatch(); // Reads the value of a sensor void read(); // Close the session with the sensor (endWatch is called if necessary) void close(); readonly attribute DOMString status; // ("watching", "closed", ...) attribute Function onSensorData; attribute Function onError; }; interface SensorData { readonly attribute any value; }; // New DOM Event 'sensordata' interface SensorDataEvent : Event { readonly attribute SensorData data; void initSensorDataEvent(in DOMString type, in boolean bubbles, in boolean cancelable, in SensorData data); }; interface SensorWatchOptions { // High threshold. If the sensor value is higher a data event will be raised attribute any highThreshold; // Low threshold. If the sensor value is lower a data event will be raised attribute any lowThreshold; // Notify only when a relative change in the magnitude meausured by the sensor occurs attribute double relativeThreshold; // Interval at which values will be provided by the sensor (milliseconds) attribute double interval; };
Example of use
var accelerometer = navigator.sensor.newSession('Accelerometer'); session.onSensorData = function(e) { window.console.log('New accelerometer data'); window.console.log('Acceleration along the x axis: ' + e.value.x); }; var watchOptions = { interval: 1.0 }; // Every one millisecond accelerometer.watch(watchOptions);