근접 센서

W3C 워킹 드래프트,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2025/WD-proximity-20250212/
최신 공개 버전:
https://www.w3.org/TR/proximity/
에디터스 드래프트:
https://w3c.github.io/proximity/
이전 버전:
히스토리:
https://www.w3.org/standards/history/proximity/
피드백:
public-device-apis@w3.org 제목 줄에 “[proximity] … message topic …” 포함 (아카이브)
깃허브
에디터:
Anssi Kostiainen (인텔 코퍼레이션)
Rijubrata Bhaumik (인텔 코퍼레이션)
이전 에디터:
Dzung D Tran (인텔 코퍼레이션)
버그 리포트:
w3c/proximity 저장소(GitHub)에서 제출
이슈 트래킹:
이슈
테스트 스위트:
깃허브의 web-platform-tests

요약

이 명세는 물리적 객체가 물리적 접촉 없이 가까이 있는지를 감지하는 구체적인 센서 인터페이스를 정의합니다.

이 문서의 상태

이 부분은 문서가 출판된 시점에 해당 문서의 상태를 설명합니다. 현재 W3C의 모든 발행물 및 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인(https://www.w3.org/TR/)에서 확인할 수 있습니다.

이 문서는 디바이스 및 센서 워킹 그룹에서 Recommendation 트랙을 사용하여 Working Draft로 발행되었습니다. 이 문서는 W3C 권고안이 되는 것을 목표로 하고 있습니다.

본 문서와 관련하여 의견을 제출하려면 public-device-apis@w3.org ( 구독, 아카이브 )로 보내주시기 바랍니다. 이메일 전송 시 제목에 “proximity”를 반드시 포함해 주시고, 예시: “[proximity] …의견 요약…”. 모든 의견을 환영합니다.

Working Draft로의 출판은 W3C 및 그 회원사의 공식 지지를 의미하지 않습니다. 이 문서는 초안 문서이며 언제든 업데이트, 대체 또는 폐기될 수 있습니다. 해당 문서는 진행 중인 작업 외의 목적으로 인용해서는 안 됩니다.

이 문서는 W3C 특허 정책을 준수하는 그룹에 의해 생산되었습니다. W3C는 해당 그룹의 결과물에 관한 특허 공개 목록을 관리합니다. 해당 페이지에는 특허 공개 안내도 포함되어 있습니다. 개인이 본인이 알고 있는 특허가 Essential Claim(s)를 포함한다고 생각하는 경우 W3C 특허 정책 6항에 따라 정보를 공개해야 합니다.

이 문서는 2023년 11월 3일 W3C 프로세스 문서의 적용을 받습니다.

디바이스 및 센서 워킹 그룹은 API의 보안 및 프라이버시 측면에 대해 자체 검토와 수정을 진행한 후 horizontal review를 요청할 예정입니다. 기존 보안 및 프라이버시 이슈 목록을 공개하고 있습니다.

1. 소개

근접 센서는 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. 보안 및 프라이버시 고려사항

근접 센서는 센서와 인접 물체의 근접 정보를 제공하므로, 사용자 식별 또는 기기 핑거프린팅 공격에 프라이버시 민감한 정보를 노출할 수 있습니다.

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

이러한 완화 전략은 Generic Sensor API [GENERIC-SENSOR]에 정의된 일반 완화책을 보완합니다.

4. 권한 정책 통합

이 명세서는 문자열 "proximity-sensor"로 식별되는 정책 제어 기능을 정의합니다. 기본 허용 리스트는 "self"입니다.

5. 모델

근접 센서 센서 유형에는 다음과 같은 관련 데이터가 있습니다:

확장 센서 인터페이스

ProximitySensor

센서 권한 이름

"proximity"

센서 기능 이름

"proximity-sensor"

권한 해지 알고리즘

일반 센서 권한 해지 알고리즘에 "proximity"를 사용합니다.

기본 센서

기기의 주요 근접 탐지기

가상 센서 유형

"proximity"

최신 판독값근접 센서 센서 유형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 인터페이스에서 get value from latest readingthis와 "distance"로 호출한 결과를 반환합니다.

물리적 물체가 감지 범위 밖에 있을 경우 이 속성은 null을 반환해야 합니다.

6.1.2. max 속성

max 속성은 ProximitySensor 인터페이스에서 get value from latest readingthis와 "max"로 호출한 결과를 반환합니다.

6.1.3. near 속성

near 속성은 ProximitySensor 인터페이스에서 get value from latest readingthis와 "near"로 호출한 결과를 반환합니다.

물리적 물체가 감지 범위 밖에 있을 경우 이 속성은 null을 반환해야 합니다.

참고: 구현체가 near 값을 제공할 수 없는 경우, distance 값으로부터 near 값을 추론할 수 있습니다. 예를 들어, distancemax와 같지 않으면 감지 범위 내 물리적 객체가 있음을 의미할 수 있습니다.

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. 자동화

이 섹션에서는 Generic Sensor API § 9 자동화를 확장하여 근접 센서 전용 가상 센서 메타데이터를 제공합니다.

유형별 가상 센서 메타데이터 에는 다음 엔트리가 있어야 합니다:

"proximity"

가상 센서 메타데이터로, 판독 파싱 알고리즘근접 판독 파싱 알고리즘입니다.

8.1. 근접 판독 파싱 알고리즘

입력

parameters, JSON Object

출력

센서 판독값 또는 undefined

  1. reading을 새로운 센서 판독값으로 둔다.

  2. keys리스트 « "distance", "max" » 로 둔다.

  3. key에 대하여 keys를 반복함

    1. value단일값 번호 판독 파싱parameterskey를 넘겨 얻음.

      1. 만약 valueundefined이면,

        1. undefined를 반환합니다.

    2. reading[key]에 value[key]를 설정합니다.

  4. nearget a propertyparameters와 "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 명세서 [WEBIDL]에 설명된 적합성 요건에 따라 해석해야 합니다.

색인

이 명세서에서 정의한 용어

참조에 의해 정의된 용어

참고 문헌

규범적 참고 문헌

[ECMASCRIPT]
ECMAScript 언어 명세. 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. 요구 사항 수준 표시를 위한 RFC의 키워드. 1997년 3월. 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;
};