1. Introduction
The Proximity Sensor extends the Generic Sensor API [GENERIC-SENSOR] to provide information about proximity level, as detected by the device’s primary proximity sensor. The proximity level is reported as the distance (in centimeter) from the sensor to the closest visible surface. §6 Limitations of Proximity Sensors describes more about the potential limitations, why the precise distance value reported by different devices can be different, due to differences in detection method, sensor construction, etc. Moreover some proximity sensors might be only able to provide just a boolean to indicate if there is an object which is near, more like presence detection, than an absolute value for the distance.
2. Examples
let sensor = new ProximitySensor(); sensor.start(); sensor.onchange = event => console.log(event.reading.distance); sensor.onerror = function(event) { console.log(event.error.name, event.error.message); };
3. Security and Privacy Considerations
There are no specific security and privacy considerations beyond those described in the Generic Sensor API [GENERIC-SENSOR].
4. Model
The Proximity Sensor’s associated Sensor subclass is the ProximitySensor
class.
The Proximity Sensor’s associated SensorReading subclass is the ProximitySensorReading
class.
The Proximity Sensor has a default sensor, which is the device’s main proximity detector.
The Proximity Sensor has a single supported reporting mode which is "auto".
The Proximity Sensor’s permission name is "proximity"
.
It has no associated PermissionDescriptor.
The Proximity Sensor has an associated abstract operation to retrieve the sensor permission which must simply return a permission whose name is "proximity".
The Proximity Sensor has an associated abstract operation
to construct a SensorReading object which creates a new ProximitySensorReading
object and sets its distance attribute to
positive infinity.
Distance is a value that represents the distance between a device and the closest visible surface. Its unit is the centimeter (cm).
5. API
5.1. The ProximitySensor Interface
[Constructor(optional SensorOptions sensorOptions)] interface ProximitySensor : Sensor { readonly attribute ProximitySensorReading? reading; };
To Construct a ProximitySensor Object the user agent must invoke the construct a Sensor object abstract operation.
5.2. The ProximitySensorReading Interface
[Constructor(ProximitySensorReadingInit proximitySensorReadingInit)] interface ProximitySensorReading : SensorReading { readonly attribute unrestricted double distance; readonly attribute unrestricted double max; readonly attribute boolean? near; }; dictionary ProximitySensorReadingInit { unrestricted double distance = Infinity; unrestricted double max = Infinity; boolean? near; };
5.2.1. The ProximitySensorReading constructor
5.2.2. The distance attribute
The distance attribute of the ProximitySensorReading
interface represents the distance between the sensor and the closest visible surface, in centimeters.
5.2.3. The max attribute
The max attribute of the ProximitySensorReading
interface represents the maximum sensing range for the primary proximity sensor, in centimeters.
5.2.4. The near attribute
The near attribute of the ProximitySensorReading
interface represents the the presence of a visible surface in the vicinity of the primary proximity sensor, in centimeters.
Note: If the implementation is unable to provide the near
value, it could infer the near
value from the value of distance
.
For example, if distance
is not equal to max
or default value (Infinity),
it could imply there is an object in the sensing range.
6. Limitations of Proximity Sensors
Since most proximity sensors detect electromagnetic radiation (e.g., an infrared light or a magnetic field), certain material properties can interfere with the sensor’s ability to sense the presence of a physical object. Things that can interfere with a sensor include, but are not limited to, the material’s translucency, reflectiveness, color, temperature, chemical composition, and even the angle at which the object is reflecting the radiation back at the sensor. As such, proximity sensors should not be relied on as a means to measure distance. The only thing that can be deduced from a proximity sensor is that an object is somewhere in the distance between the minimum sensing distance and the maximum sensing distance with some degree of certainty.
7. Acknowledgements
Tobie Langel for the work on Generic Sensor API and inputs on this specification. Doug Turner for the initial prototype and Marcos Caceres for the test suite.
Conformance
Document conventions
Conformance requirements are expressed with a combination of descriptive assertions and RFC 2119 terminology. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative parts of this document are to be interpreted as described in RFC 2119. However, for readability, these words do not appear in all uppercase letters in this specification.
All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]
Conformance Classes
A conformant user agent must implement all the requirements listed in this specification that are applicable to user agents.