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. 모델
근접 센서 센서 유형에는 다음과 같은 관련 데이터가 있습니다:
- 확장 센서 인터페이스
- 센서 권한 이름
-
"
"proximity - 센서 기능 이름
- 권한 해지 알고리즘
-
일반 센서 권한 해지 알고리즘에 "
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 reading을
물리적 물체가 감지 범위 밖에 있을 경우 이 속성은 null을 반환해야 합니다.
6.1.2. max 속성
max
속성은 ProximitySensor
인터페이스에서 get value from latest reading을
6.1.3. near 속성
near
속성은 ProximitySensor
인터페이스에서 get value from latest reading을
물리적 물체가 감지 범위 밖에 있을 경우 이 속성은 null을 반환해야 합니다.
참고: 구현체가 near 값을 제공할 수 없는 경우, distance 값으로부터 near 값을 추론할 수 있습니다. 예를 들어, distance가 max와 같지 않으면 감지 범위 내 물리적 객체가 있음을 의미할 수 있습니다.
7. 추상 연산
7.1. 근접 센서 객체 생성
- 입력
-
options,
SensorOptions객체. - 출력
-
ProximitySensor객체.
-
allowed를 센서 정책 제어 기능 확인에
ProximitySensor를 넘겨 호출한 결과로 둔다. -
만약 allowed가 false라면:
-
다음 오류를 발생시킴:
SecurityErrorDOMException.
-
-
proximity_sensor를 새로운
ProximitySensor객체로 둔다. -
센서 객체 초기화를 proximity_sensor와 options를 넘겨 실행한다.
-
proximity_sensor를 반환한다.
8. 자동화
이 섹션에서는 Generic Sensor API § 9 자동화를 확장하여 근접 센서 전용 가상 센서 메타데이터를 제공합니다.
유형별 가상 센서 메타데이터 맵에는 다음 엔트리가 있어야 합니다:
- 키
- 값
-
가상 센서 메타데이터로, 판독 파싱 알고리즘이 근접 판독 파싱 알고리즘입니다.
8.1. 근접 판독 파싱 알고리즘
-
reading을 새로운 센서 판독값으로 둔다.
-
keys를 리스트 « "
distance", "max" » 로 둔다. -
각 key에 대하여 keys를 반복함
-
value를 단일값 번호 판독 파싱에 parameters와 key를 넘겨 얻음.
-
만약 value가 undefined이면,
-
undefined를 반환합니다.
-
-
-
reading[key]에 value[key]를 설정합니다.
-
-
near를 get a property를 parameters와 "
near"로 호출한 결과로 둠.-
만약 near 타입이 Boolean이 아니면
-
undefined를 반환함.
-
-
reading["
near"]에 near를 설정함.
-
-
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]에 설명된 적합성 요건에 따라 해석해야 합니다.