接近传感器

W3C 工作草案,

关于本文档的更多详细信息
本版本:
https://www.w3.org/TR/2026/WD-proximity-20260514/
最新发布版本:
https://www.w3.org/TR/proximity/
编辑草案:
https://w3c.github.io/proximity/
先前版本:
历史:
https://www.w3.org/standards/history/proximity/
反馈:
public-device-apis@w3.org 主题行使用“[proximity] … 消息主题 …”(存档
GitHub
编辑:
Anssi KostiainenIntel Corporation
Rijubrata BhaumikIntel Corporation
前任编辑:
Dzung D TranIntel Corporation
Bug 报告:
通过 GitHub 上的 w3c/proximity 仓库
问题跟踪:
问题
测试套件:
GitHub 上的 web-platform-tests

摘要

本规范定义了一个具体的传感器接口,用于在没有物理接触的情况下 监测附近物理对象的存在。

本文档状态

本节描述本文档在其发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版 可在 W3C 技术报告 索引中找到。

本文档由 Devices and Sensors Working Group 作为工作草案使用 推荐 轨道发布。本文档旨在成为 W3C 推荐标准。

如果你希望就本文档发表评论,请发送至 public-device-apis@w3.org订阅存档)。 发送电子邮件时, 请将文本“proximity”放入主题中, 最好采用如下形式: “[proximity] …评论摘要…”。 欢迎所有评论。

作为工作草案发布并不意味着 W3C 及其成员认可该文档。这是一个草案文档,可能会 随时被其他文档更新、替换或 废弃。除作为进行中的工作外,不宜引用 本文档。

本文档由一个根据 W3C 专利政策运作的组制作。 W3C 维护了一个与该组交付物相关的任何专利 披露的公开列表; 该页面还包含披露专利的说明。 实际知晓某项专利且认为该专利包含必要权利要求的个人 必须按照 W3C 专利政策第 6 节披露该信息。

本文档受 2025 年 8 月 18 日 W3C 流程文档管辖。

本规范未在任何浏览器引擎中实现。预计其当前形式不会推进 到 W3C 推荐标准。

Devices and Sensors Working Group 将在请求水平审查之前,对 API 的安全与隐私方面 执行一轮自审和 修订。现有的安全 与隐私问题可用。

1. 引言

Proximity Sensor 扩展了 Generic Sensor API [GENERIC-SENSOR], 以提供由设备主接近传感器检测到的接近级别信息。接近级别报告为从 传感器到最近可见表面的距离(以厘米为单位)。§ 9 接近传感器的 局限 进一步描述了潜在的局限,以及为什么不同设备报告的精确距离值可能不同, 这是由于检测方法、传感器构造等方面的差异。此外,某些接近传感器可能只能 提供一个布尔值,用于指示附近是否存在物理对象, 更像是存在检测,而不是距离的绝对值。

2. 示例

let sensor = new ProximitySensor();
sensor.start();

sensor.onreading = () => console.log(sensor.distance);

sensor.onerror = event => console.log(event.error.name, event.error.message);

3. 安全与隐私考量

Proximity sensor 提供有关传感器与附近对象接近程度的信息, 因而可能暴露对用户识别 和/或 指纹识别攻击敏感的隐私信息。

为缓解这些问题,用户代理应使用以下一种或两种缓解 策略

这些缓解策略补充了 Generic Sensor API [GENERIC-SENSOR] 中定义的通用 缓解措施

4. Permissions Policy 集成

本规范定义了一个由字符串 "proximity-sensor" 标识的策略控制特性。 其默认允许列表为 "self"。

5. 模型

Proximity Sensor 传感器类型具有以下关联数据:

扩展传感器接口

ProximitySensor

传感器权限名称

"proximity"

传感器特性名称

"proximity-sensor"

权限撤销算法

以 "proximity" 调用通用传感器权限撤销 算法

默认传感器

设备的主接近检测器。

虚拟传感器类型

"proximity"

对于 Proximity Sensor 传感器类型的一个 Sensor, 其最新读数包含 三个条目, 其为 "distance"、"max"、"near",其包含 distancemaxnear 值。

distance 是一个值, 表示设备与位于感测范围内的物理对象最近可见表面之间的距离。 其单位为厘米(cm)。

max 是一个值,表示 主接近检测器的最大感测范围, 以厘米为单位。

near 是一个值,表示 主接近检测器附近存在 可见表面。

6. API

6.1. ProximitySensor 接口

[SecureContext, Exposed=Window]
interface ProximitySensor : Sensor {
  constructor(optional SensorOptions sensorOptions = {});
  readonly attribute double? distance;
  readonly attribute double? max;
  readonly attribute boolean? near;
};

为构造一个 ProximitySensor 对象,用户代理必须调用 构造接近传感器对象抽象 操作。

6.1.1. distance 属性

distance 属性属于 ProximitySensor 接口,它返回以 this 和 "distance" 为参数调用 从最新读数获取值所得的结果。

如果物理对象位于感测范围之外,该属性必须返回 null。

6.1.2. max 属性

max 属性属于 ProximitySensor 接口,它返回以 this 和 "max" 为参数调用 从最新读数获取值所得的结果。

6.1.3. near 属性

near 属性属于 ProximitySensor 接口,它返回以 this 和 "near" 为参数调用 从最新读数获取值所得的结果。

如果物理对象位于感测范围之外,该属性必须返回 null。

注:如果实现无法提供 near 值,则可以从 near 的值推断 distance。例如,如果 distance 不等于 max,则可以暗示 感测范围内存在物理对象。

7. 抽象操作

7.1. 构造接近传感器对象

输入

options,一个 SensorOptions 对象。

输出

一个 ProximitySensor 对象。

  1. allowed 为以 ProximitySensor 调用 检查传感器策略控制 特性所得的结果。

  2. 如果 allowed 为 false,则:

    1. 抛出一个 SecurityError DOMException

  3. proximity_sensor 为新的 ProximitySensor 对象。

  4. proximity_sensoroptions 调用 初始化传感器对象

  5. 返回 proximity_sensor

8. 自动化

本节通过提供 Proximity Sensor 特定的虚拟传感器元数据, 扩展了 Generic Sensor API § 9 自动化

按类型虚拟传感器元数据映射 必须具有以下条目

"proximity"

一个虚拟传感器元数据,其读数解析算法接近读数解析算法

8.1. 接近读数解析算法

输入

parameters,一个 JSON Object

输出

一个传感器读数undefined

  1. reading 为一个新的传感器 读数

  2. keys列表 « "distance", "max" »。

  3. keys 的每个 key执行

    1. value 为以 parameterskey 调用 解析单值数字读数 所得的结果。

      1. 如果 valueundefined

        1. 返回 undefined

    2. reading[key]设置value[key]。

  4. near 为以 "near" 从 parameters获取属性所得的结果。

    1. 如果 near 的类型不是 Boolean

      1. 返回 undefined

    2. reading["near"]设置near

  5. 返回 reading

9. 接近传感器的局限

由于大多数接近传感器会检测电磁辐射(例如红外光 或磁场),某些材料属性可能会干扰传感器 感知物理对象存在的能力。可能干扰 传感器的因素包括但不限于材料的半透明性、反射性、 颜色、温度、化学成分,甚至物理对象 将辐射反射回传感器的角度。因此,不应依赖接近传感器 作为测量距离的手段。从接近传感器唯一能够 推断出的是,某个物理对象以一定确定性位于 最小感测距离与最大感测距离之间的某处。

10. 致谢

感谢 Tobie Langel 在 Generic Sensor API 上的工作以及对本规范的意见。 感谢 Doug Turner 提供初始原型, 感谢 Marcos Caceres 提供测试套件。

11. 一致性

一致性要求通过描述性断言 与 RFC 2119 术语的组合来表达。本文档规范性部分中的关键词 "MUST"、 "MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、 "RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按 RFC 2119 中的描述来解释。 但是,为了可读性,这些词在本规范中并非全部以大写 字母出现。

本规范的所有文本都是规范性的,除非某些章节 明确标记为非规范性、示例和注释。[RFC2119]

一致性用户 代理必须实现本规范中列出的 所有适用于用户代理的要求。

本规范中的 IDL 片段必须按照 Web IDL 规范中对 符合要求的 IDL 片段所描述的方式解释。[WEBIDL]

索引

由本 规范定义的术语

由 引用定义的术语

参考文献

规范性参考文献

[ECMASCRIPT]
ECMAScript Language Specification. URL: https://tc39.es/ecma262/multipage/
[GENERIC-SENSOR]
Rick Waldron. Generic Sensor API. URL: https://w3c.github.io/sensors/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. Permissions. URL: https://w3c.github.io/permissions/
[PERMISSIONS-POLICY-1]
Ian Clelland. Permissions Policy. URL: https://w3c.github.io/webappsec-permissions-policy/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBDRIVER2]
Simon Stewart; David Burns. WebDriver. URL: https://w3c.github.io/webdriver/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

IDL 索引

[SecureContext, Exposed=Window]
interface ProximitySensor : Sensor {
  constructor(optional SensorOptions sensorOptions = {});
  readonly attribute double? distance;
  readonly attribute double? max;
  readonly attribute boolean? near;
};