근접 센서

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 Kostiainen (Intel Corporation)
Rijubrata Bhaumik (Intel Corporation)
이전 편집자:
Dzung D Tran (Intel Corporation)
버그 보고:
GitHub의 w3c/proximity 저장소를 통해
이슈 추적:
이슈
테스트 모음:
GitHub의 web-platform-tests

초록

이 명세는 물리적 접촉 없이 가까운 물리적 객체의 존재를 모니터링하기 위한 구체적인 센서 인터페이스를 정의한다.

이 문서의 상태

이 절은 이 문서가 공개된 시점의 상태를 설명한다. 현재 W3C 간행물 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인에서 찾을 수 있다.

이 문서는 Devices and Sensors Working Group이 Recommendation 트랙을 사용하여 작업 초안으로 공개했다. 이 문서는 W3C Recommendation이 되는 것을 목적으로 한다.

이 문서에 대한 의견을 보내려면 public-device-apis@w3.org로 보내기 바란다 (구독, 아카이브). 이메일을 보낼 때는 제목에 “proximity”라는 텍스트를 넣고, 가능하면 다음과 같이 작성하라: “[proximity] …의견 요약…”. 모든 의견을 환영한다.

작업 초안으로 공개되었다고 해서 W3C와 그 회원의 지지를 의미하는 것은 아니다. 이 문서는 초안 문서이며 언제든지 다른 문서로 업데이트, 대체 또는 폐기될 수 있다. 진행 중인 작업 이외의 것으로 이 문서를 인용하는 것은 적절하지 않다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹이 작성했다. W3C는 이 그룹의 산출물과 관련하여 이루어진 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허를 공개하기 위한 지침도 포함되어 있다. 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가지고 있는 경우, 그 개인은 W3C 특허 정책 6절에 따라 해당 정보를 공개해야 한다.

이 문서는 2025년 8월 18일 W3C Process Document의 적용을 받는다.

이 명세는 어떤 브라우저 엔진에서도 구현되어 있지 않다. 현재 형태로는 W3C Recommendation으로 진전될 것으로 예상되지 않는다.

Devices and Sensors Working Group은 수평 검토를 요청하기 전에 API의 보안 및 개인정보 측면에 대해 자체 검토와 개정을 한 차례 수행할 것이다. 기존 보안 및 개인정보 이슈를 사용할 수 있다.

1. 소개

Proximity Sensor는 Generic Sensor API [GENERIC-SENSOR]를 확장하여 기기의 주 근접 센서가 감지한 근접 수준에 대한 정보를 제공한다. 근접 수준은 센서에서 가장 가까운 보이는 표면까지의 거리(센티미터 단위)로 보고된다. § 9 근접 센서의 한계는 잠재적 한계에 대해 더 자세히 설명하며, 감지 방법, 센서 구성 등의 차이로 인해 서로 다른 기기가 보고하는 정확한 거리 값이 다를 수 있는 이유도 설명한다. 또한 일부 근접 센서는 거리의 절대값보다는, 존재 감지에 더 가깝게 가까운 물리적 객체가 있는지를 나타내는 boolean만 제공할 수 있다.

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. 보안 및 개인정보 고려사항

근접 센서는 센서와 가까운 객체 사이의 가까움에 대한 정보를 제공하므로, 사용자 식별 및/또는 지문채취 공격을 위한 개인정보에 민감한 정보를 노출할 수 있다.

이를 완화하기 위해 사용자 에이전트는 다음 완화 전략 중 하나 또는 둘 모두를 사용해야 한다:

이러한 완화 전략은 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"이고 그 값이 distance, max 및 near 값을 포함하는 세 개의 항목을 포함한다.

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 값을 제공할 수 없는 경우, distance 값으로부터 near 값을 추론할 수 있다. 예를 들어, distance가 max와 같지 않으면, 감지 범위 안에 물리적 객체가 있음을 의미할 수 있다.

7. 추상 연산

7.1. 근접 센서 객체 구성

입력

options, SensorOptions 객체.

출력

ProximitySensor 객체.

  1. ProximitySensor로 센서 정책 제어 기능 검사를 호출한 결과를 allowed라고 하자.

  2. allowed가 false이면:

    1. SecurityError DOMException을 던진다.

  3. 새 ProximitySensor 객체를 proximity_sensor라고 하자.

  4. proximity_sensor와 options로 센서 객체 초기화를 호출한다.

  5. proximity_sensor를 반환한다.

8. 자동화

이 절은 Generic Sensor API § 9 자동화를 확장하여 Proximity Sensor에 특화된 가상 센서 메타데이터를 제공한다.

타입별 가상 센서 메타데이터 map은 다음 항목을 가져야 한다:

키

"proximity"

값

근접 판독값 구문 분석 알고리즘을 판독값 구문 분석 알고리즘으로 갖는 가상 센서 메타데이터.

8.1. 근접 판독값 구문 분석 알고리즘

입력

parameters, JSON Object

출력

센서 판독값 또는 undefined

  1. 새 센서 판독값을 reading이라고 하자.

  2. keys를 list « "distance", "max" »라고 하자.

  3. keys의 각 key에 대해 반복한다

    1. parameters와 key로 단일 값 숫자 판독값 구문 분석을 호출한 결과를 value라고 하자.

      1. value가 undefined이면.

        1. undefined를 반환한다.

    2. reading[key]를 value[key]로 설정한다.

  4. parameters에서 "near"로 속성 가져오기를 호출한 결과를 near라고 하자.

    1. near의 타입이 Boolean이 아니면

      1. undefined를 반환한다.

    2. reading["near"]를 near로 설정한다.

  5. reading을 반환한다.

9. 근접 센서의 한계

대부분의 근접 센서는 전자기 복사(예: 적외선 또는 자기장)를 감지하므로, 특정 물질 특성은 물리적 객체의 존재를 감지하는 센서의 능력을 방해할 수 있다. 센서를 방해할 수 있는 것에는 물질의 반투명성, 반사성, 색, 온도, 화학 조성, 그리고 물리적 객체가 복사를 센서로 되반사하는 각도까지 포함되지만, 이에 한정되지 않는다. 따라서 근접 센서는 거리를 측정하는 수단으로 의존해서는 안 된다. 근접 센서로부터 추론할 수 있는 유일한 것은 물리적 객체가 어느 정도의 확실성을 가지고 최소 감지 거리와 최대 감지 거리 사이의 어딘가에 있다는 것이다.

10. 감사의 말

Generic Sensor API 작업과 이 명세에 대한 의견을 제공한 Tobie Langel에게 감사한다. 초기 프로토타입을 만든 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;
};