근접 센서는 물리적 접촉 없이 스마트폰 화면 앞에 있는 물체의 존재를 감지하는 적외선 센서입니다. 주요 기능은 통화 중 디스플레이를 껰서 빨에 의한 실수 터치를 방지하고 배터리를 절약하는 것입니다. Google Android Developer Guide, 2024에 따르면, 최신 근접 센서는 0.5 cm 정확도로 0~10 cm 거리를 측정하며 응답 시간은 50 ms 미만입니다.
주요 내용
근접 센서는 스마트폰 전면 패널 상단, 수화기 스피커 옆에 위치한 비접촉식 적외선 센서입니다. 적외선 LED(IR LED)와 광검출기(포토다이오드 또는 포토트랜지스터)로 구성됩니다. 근접 센서가 탑재된 최초의 대량 생산 스마트폰은 Apple iPhone(2007)이며, 이후 이 센서는 모든 현대 휴대폰의 필수 부품이 되었습니다.
센서는 일반적으로 디스플레이 유리 아래에 숨겨져 있으며 특정 각도에서만 작은 점으로 보입니다. 최신 모델은 유리 반사로 인한 잘못된 트리거를 방지하기 위해 좋은 비임 각도(15~30도)의 광학 모듈을 사용합니다. 제조사로는 Sharp, ams OSRAM(TMD 시리즈), Silicon Labs 및 그들의 계약 파트너가 있습니다.
| 파라미터 | 값 |
|---|---|
| 파장 | 850~940 nm (보이지 않는 IR 영역) |
| 범위 | 0~10 cm |
| 분해능 | 0.5 cm |
| 전력 소비 | 0.3~0.7 mA |
| 응답 시간 | 10~50 ms |
모바일 기기에서는 개별 센서(IR LED + 포토다이오드의 별도 칩)와 통합 모듈(단일 칩에 두 요소 모두)이 사용됩니다. 통합 솔루션(ams TMD2635, 크기 1×1×0.5 mm)은 최신 플래그십의 초박형 케이스에 사용되며 기판에서 최소한의 공간을 차지합니다.
근접 센서의 작동 원리는 반사된 IR 방사 강도 측정에 기반합니다. 적외선 LED가 광 펄스(850~940 nm)를 방출하고, 포토다이오드가 물체에서 반사된 빛의 양을 측정합니다. 반사 신호가 임계값을 초과하면 물체가 가까운(3~5 cm 미만)것으로 간주됩니다.
주요 기술적 과제는 태양광 간섭 및 기타 IR 소스의 노이즈입니다. 해결책은 방출 변조입니다. IR LED가 10~100 kHz 주파수로 펄스를 방출하고, 광검출기가 DC 성분을 필터링하면서 동기식으로 신호를 감지합니다. ams Application Note AN000610(2024)에 따르면, 동기식 검출은 배경 조명을 40~60 dB 억제합니다.
트리거 임계값은 보정 중에 제조사가 설정하며 디스플레이 유리 투명도에 따라 달라집니다. 일반적인 임계값은 2~4 cm의 반사 거리에 해당합니다. 손가락이나 귀가 임계값보다 가까이 위치하면 센서는 0(가까움)을 출력하고, 그렇지 않으면 최대 범위 값(모델에 따라 8~10 cm)을 반환합니다.
IR 근접 센서는 반사 강도를 측정합니다 — 두 가지 상태를 가진 바이너리 센서입니다. Time-of-Flight(ToF)는 빛이 물체까지 이동했다가 돌아오는 시간을 측정하여 최대 수 미터까지 정확한 거리 측정이 가능합니다. 모바일 기기에서는 ToF 센서(STMicroelectronics의 VL53L5)가 카메라 자동 초점 및 AR 애플리케이션에 사용됩니다.
통화 중 화면 끄기 작업에는 단순한 바이너리 IR 센서로 충분합니다 — 비용은 ToF 모듈의 $1~$3에 비해 $0.10~$0.30입니다. ToF 센서는 정확한 거리 측정을 추가하지만 기본 작업에는 과잉입니다. 일부 플래그십(Samsung Galaxy S23 Ultra)은 두 기술을 통합한 복합 모듈을 사용합니다.
| 파라미터 | IR 근접 | ToF 센서 |
|---|---|---|
| 원리 | 반사 강도 | 빛의 비행 시간 |
| 범위 | 0~10 cm | 0~400 cm |
| 정확도 | 0.5 cm | 0.1 cm |
| 비용 | $0.10~$0.30 | $1~$3 |
| 용도 | 통화 중 화면 | 자동 초점, AR |
Android는 Sensor.TYPE_PROXIMITY를 통해 근접 센서에 대한 액세스를 제공합니다. API의 주요 특징은 센서가 실질적으로 의미 있는 두 가지 값(0=물체 가까움, 물체가 없을 때 최대 범위 값(보통 5~10 cm))만 반환한다는 것입니다. 내부 알고리즘이 신호의 아난로그 특성을 숨깁니다.
센서의 바이너리 특성은 앱이 물체까지의 정확한 거리를 얻을 수 없음을 의미합니다 — 감지 영역 내에 장애물이 있는지 여부만 알 수 있습니다. 이는 하드웨어 제한입니다. 더 정확한 측정을 위해 표준 TYPE_PROXIMITY API를 통해 ToF 센서(사용 가능한 경우)를 사용하십시오. 단, ToF가 있는 기기에서는 아난로그 값을 반환합니다.
val proximitySensor = sensorManager
.getDefaultSensor(Sensor.TYPE_PROXIMITY)
sensorManager.registerListener(
object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
val distance = event.values[0]
val maxRange = proximitySensor?.maximumRange ?: 10f
when {
distance < maxRange -> lockScreen()
else -> unlockScreen()
}
}
override fun onAccuracyChanged(
sensor: Sensor, accuracy: Int
) {}
},
proximitySensor,
SensorManager.SENSOR_DELAY_UI
)
근접 센서를 등록할 때, 앱이 화면이 껴진 상태에서도 계속 실행되어야 하는 경우(예: 통화 녹음) SCREEN_OFF_WAKE_LOCK을 사용하는 것이 중요합니다. Wake Lock이 없으면 CPU가 절전 모드로 전환되어 센서 데이터 수신이 중단될 수 있습니다. SENSOR_DELAY_UI 플래그(200 ms)는 대부분의 시나리오에 충분합니다.
센서의 주요 기능은 통화 중 화면 끄기이지만, 개발자들은 더 창의적인 용도를 찾고 있습니다. Glimmer 앱은 화면 앞에서 손을 흔들어 트렉을 건너뛰는 데 근접 센서를 사용합니다 — 손바닥을 스와이프하여 노래를 건너뛰세요. 배터리에는 영향이 없습니다. 센서는 0.3~0.7 mA만 소비합니다.
근접 센서의 주요 문제는 화면 보호기 및 케이스 사용 시 잘못된 트리거입니다. 일부 제조사(Google Pixel 8, 2023)는 IR 대신 초음파 근접 센서를 사용합니다 — 이는 모든 화면 보호기와 모든 두께의 디스플레이를 통해 작동하지만 정확도가 낮고 지연 시간이 깁니다(최대 100 ms). 두께운 유리(0.5 mm 이상)는 IR 방사를 산란시키어 지속적인 트리거를 유발합니다. 해결책은 센서용 정밀 컷아웃이 있는 케이스를 사용하는 것입니다. 둘째 단점은 가변 투명도의 OLED 디스플레이(디스플레이 아래 센서)를 통해 작동할 수 없다는 점입니다.
2024~2025년에 제조사들은 디스플레이 아래 근접 센서를 구현하기 시작하여 상단 베쥌을 1~2 mm로 줄였습니다. 디스플레이 아래 근접 센서를 탑재한 최초의 양산 기기는 Xiaomi 14 Ultra(2024)였으며, 그 뒤를 OnePlus 12와 Samsung Galaxy S25가 이었습니다. 이 기술은 OLED 픽셀을 부분적으로 통과하는 940 nm의 IR 방사를 사용합니다. Samsung Display Technical Paper(2024)에 따르면, IR 방사에 대한 OLED 투명도는 15~25%로, 600 cd/m²까지의 화면 밝기에서 센서 작동에 충분합니다. 더 높은 밝기에서는 매트릭스가 IR에 대해 불투명해지며, 센서는 측정을 위해 1~2 프레임 동안 백라이트를 껰야 합니다.
Android 앱 개발 시 에몬레이터는 근접 센서를 지원하지 않습니다 — 소프트웨어로 에몬레이션해야 합니다. 실제 기기에서는 적절한 ABS_MT_TOUCH_MAJOR 코드와 함께 adb 명령 adb shell sendevent /dev/input/eventX를 사용할 수 있습니다. 테스트에서 통화 중 화면 껴짐을 시뮬레이션하려면 onSensorChanged 호출 시 0을 반환하는 mock 객체로 SensorManager를 사용하십시오.
Android 기기에서 근접 센서를 테스트하려면 전화 앱을 열고, *#0*#(Samsung의 경우)를 누른 다음 Sensor를 선택하십시오. 손가락을 화면 상단에 가까이 가져가면 센서 값이 “Far”에서 “Near”로 변경되어야 합니다. 센서가 반응하지 않으면 화면 상단을 답고 센서를 덮고 있는 화면 보호기가 있는지 확인하십시오. iPhone에서는 설정의 시스템 진단을 통해 테스트합니다.
자주 묻는 질문
가장 흔한 원인은 화면 보호기나 케이스가 근접 센서를 가리고 있는 것입니다. 수화기 스피커 근처 영역이 막혀 있지 않은지 확인하십시오. 보호기 없이도 문제가 발생한다면 하드웨어 결함 또는 센서 오염일 수 있습니다.
센서는 전면 패널 상단, 수화기 스피커 옆에 있습니다. 최신 스마트폰에서는 디스플레이 유리 아래에 숨겨져 있습니다. 밝은 손전등을 비스듬히 비추면 볼 수 있습니다 — 작은 점이나 슬릿처럼 보입니다.
표준 Android 도구로는 — 아니요. 그러나 테스트를 위해 엔지니어링 메뉴(Samsung에서 *#0*# 입력)에 접근할 수 있는 앱이 있습니다. 일부 기기에서는 서비스 모드를 통해 감도를 조정할 수 있습니다.
표준 근접 센서 API는 감지 플래그만 반환합니다 — 0 또는 maxRange. 정확한 거리를 위해서는 Time-of-Flight 센서(기기에 있는 경우)를 사용하십시오 — 호환 기기에서 동일한 TYPE_PROXIMITY를 통해 사용 가능합니다.
두께와 재질에 따라 다릅니다. 않은 유연성 보호기(0.15~0.2 mm)는 작동에 영향을 주지 않습니다. 두께운 강화 유리(0.5 mm 이상)는 IR 방사를 산란시키어 잘못된 트리거를 일으킬 수 있습니다. 센서 주변에 정밀 컷아웃이나 검은색 프레임이 있는 보호기를 권장합니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.