근접 센서

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 GroupRecommendation 트랙을 사용하여 작업 초안으로 공개했다. 이 문서는 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, maxnear 값을 포함하는 세 개의 항목을 포함한다.

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 값을 추론할 수 있다. 예를 들어, distancemax와 같지 않으면, 감지 범위 안에 물리적 객체가 있음을 의미할 수 있다.

7. 추상 연산

7.1. 근접 센서 객체 구성

입력

options, SensorOptions 객체.

출력

ProximitySensor 객체.

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

  2. allowed가 false이면:

    1. SecurityError DOMException던진다.

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

  4. proximity_sensoroptions센서 객체 초기화를 호출한다.

  5. proximity_sensor를 반환한다.

8. 자동화

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

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

"proximity"

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

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

입력

parameters, JSON Object

출력

센서 판독값 또는 undefined

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

  2. keyslist « "distance", "max" »라고 하자.

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

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

      1. valueundefined이면.

        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;
};