Czujnik zbliżeniowy to czujnik podczerwieni, który wykrywa obecność obiektu przed ekranem smartfona bez fizycznego kontaktu. Główną funkcją jest wyłączanie wyświetlacza podczas rozmowy telefonicznej, aby zapobiec przypadkowym dotknięciom policzkiem i oszczędzać baterię. Według Google Android Developer Guide, 2024, nowoczesne czujniki zbliżeniowe mierzą odległość od 0 do 10 cm z dokładnością 0.5 cm i czasem reakcji poniżej 50 ms.
Najważniejsze
Czujnik zbliżeniowy (proximity sensor) to bezdotykowy czujnik podczerwieni umieszczony w górnej części przedniego panelu smartfona, obok głośnika rozmównego. Składa się z diody podczerwieni (IR LED) i fotodetektora (fotodiody lub fototranzystora). Pierwszym masowym smartfonem z czujnikiem zbliżeniowym był Apple iPhone (2007) — od tego czasu czujnik stał się obowiązkowym elementem wszystkich nowoczesnych telefonów.
Czujnik jest zwykle ukryty pod szkłem wyświetlacza i widoczny tylko pod określonym kątem jako mały punkt. W nowoczesnych modelach stosuje się moduł optyczny z wąską charakterystyką kierunkową (15–30 stopni), aby wykluczyć fałszywe odczyty od odbić w szkle. Producenci — Sharp, ams OSRAM (seria TMD), Silicon Labs i ich partnerzy kontraktowi.
| Parametr | Wartość |
|---|---|
| Długość fali | 850–940 nm (niewidzialny zakres podczerwieni) |
| Zasięg | 0–10 cm |
| Rozdzielczość | 0.5 cm |
| Pobór mocy | 0.3–0.7 mA |
| Czas reakcji | 10–50 ms |
W urządzeniach mobilnych stosuje się czujniki dyskretne (oddzielny układ IR LED + fotodioda) oraz moduły zintegrowane (oba elementy na jednym układzie). Rozwiązania zintegrowane (ams TMD2635, wymiar 1×1×0.5 mm) są używane w ultracienkich obudowach nowoczesnych flagowców i zajmują minimum miejsca na płycie.
Zasada działania czujnika zbliżeniowego opiera się na pomiarze intensywności odbitego promieniowania IR. Dioda podczerwieni emituje impuls światła (850–940 nm), a fotodioda mierzy ilość światła odbitego od obiektu. Jeśli odbity sygnał przekracza próg — obiekt jest uznawany za bliski (mniej niż 3–5 cm).
Głównym problemem technicznym jest nasłonecznienie i zakłócenia od innych źródeł IR. Rozwiązaniem jest modulacja promieniowania: IR LED emituje impulsy z częstotliwością 10–100 kHz, a fotodetektor synchronizacyjnie wykrywa sygnał, odfiltrowując składową stałą. Według ams Application Note AN000610 (2024), układ detekcji synchronizacyjnej tłumi światło tła o 40–60 dB.
Próg zadziałania jest ustawiany przez producenta na etapie kalibracji i zależy od przezroczystości szkła wyświetlacza. Typowy próg — odbicie odpowiada odległości 2–4 cm. Gdy palec lub ucho znajdzie się w odległości mniejszej niż próg, czujnik zwraca wartość 0 (blisko), w przeciwnym razie — maksymalną wartość zakresu (8–10 cm w zależności od modelu).
Czujnik zbliżeniowy (IR proximity) mierzy intensywność odbicia — czujnik binarny z dwoma stanami. Time-of-Flight (ToF) mierzy czas przelotu światła do obiektu i z powrotem, co pozwala precyzyjnie określić odległość do kilku metrów. W urządzeniach mobilnych czujniki ToF (VL53L5 od STMicroelectronics) są używane do autofokusa aparatu i aplikacji AR.
Do zadania wyłączania ekranu podczas rozmowy wystarczy prosty binarny czujnik IR — jego koszt to 0.10–0.30 dolara w porównaniu z 1–3 dolarów za moduł ToF. Czujnik ToF dodaje precyzyjną funkcję dalmierza, ale jest zbędny do podstawowego zadania. W niektórych flagowcach (Samsung Galaxy S23 Ultra) stosuje się moduły kombinowane łączące obie technologie.
| Parametr | IR Proximity | Czujnik ToF |
|---|---|---|
| Zasada | Intensywność odbicia | Czas przelotu światła |
| Zasięg | 0–10 cm | 0–400 cm |
| Dokładność | 0.5 cm | 0.1 cm |
| Koszt | $0.10–0.30 | $1–3 |
| Zastosowanie | Ekran przy rozmowie | Autofokus, AR |
Android udostępnia dostęp do czujnika zbliżeniowego przez Sensor.TYPE_PROXIMITY. Cechą charakterystyczną API jest to, że czujnik zwraca tylko dwie praktycznie istotne wartości: 0 (obiekt blisko) i wartość maksymalnego zasięgu (zwykle 5–10 cm) przy braku obiektu. Wewnętrzne algorytmy ukrywają analogową naturę sygnału.
Binarna natura czujnika oznacza, że aplikacja nie może uzyskać dokładnej odległości do obiektu — tylko fakt obecności lub braku przeszkody w strefie czułości. To ograniczenie sprzętowe. Do dokładniejszych pomiarów użyj czujnika ToF (jeśli jest dostępny) przez standardowe API TYPE_PROXIMITY, ale na urządzeniach z ToF zwraca on wartości analogowe.
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
)
Podczas rejestracji czujnika zbliżeniowego ważne jest użycie SCREEN_OFF_WAKE_LOCK, jeśli aplikacja ma działać przy wyłączonym ekranie (np. nagrywanie rozmowy). Bez Wake Lock procesor może przejść w tryb uśpienia, a dane z czujnika przestaną napływać. Flaga SENSOR_DELAY_UI (200 ms) jest wystarczająca dla większości scenariuszy.
Chociaż główną funkcją czujnika jest wyłączanie ekranu podczas rozmowy, programiści znajdują bardziej kreatywne zastosowania. Aplikacja Glimmer używa czujnika zbliżeniowego do przełączania utworów ruchem dłoni przed ekranem — przesuń dłonią, aby pominąć utwór. Ładowanie baterii przy tym nie ucierpi: pobór energii czujnika wynosi tylko 0.3–0.7 mA.
Głównym problemem czujników zbliżeniowych są fałszywe odczyty podczas używania szkieł ochronnych i etui. Niektórzy producenci (Google Pixel 8, 2023) stosują ultradźwiękowy czujnik zbliżeniowy zamiast IR — działa on przez wszelkie szkła ochronne i wyświetlacze dowolnej grubości, ale ma mniejszą dokładność i większe opóźnienie (do 100 ms). Grube szkło (ponad 0.5 mm) rozprasza promieniowanie IR, powodując ciągłe zadziałanie. Rozwiązaniem jest używanie etui z precyzyjnym wycięciem na czujnik. Drugą wadą jest niemożność działania przez wyświetlacze OLED o zmiennej przezroczystości (under-display sensor).
W latach 2024–2025 producenci zaczęli wdrażać czujniki zbliżeniowe pod wyświetlaczem (under-display), co pozwoliło zmniejszyć górną ramkę smartfona do 1–2 mm. Pierwszym seryjnym urządzeniem z under-display proximity był Xiaomi 14 Ultra (2024), a za nim podążyły OnePlus 12 i Samsung Galaxy S25. Technologia wykorzystuje promieniowanie IR o długości fali 940 nm, które częściowo przechodzi przez piksele wyświetlacza OLED. Według Samsung Display Technical Paper (2024), przezroczystość OLED dla promieniowania IR wynosi 15–25% — to wystarcza do działania czujnika przy jasności ekranu do 600 cd/m². Przy wyższej jasności matryca staje się nieprzezroczysta dla IR, a czujnik wymaga wyłączenia podświetlenia na 1–2 klatki do pomiaru.
Podczas tworzenia aplikacji na Androida emulator nie obsługuje czujnika zbliżeniowego — należy go emulować programowo. Na urządzeniu fizycznym do debugowania można użyć polecenia adb: adb shell sendevent /dev/input/eventX z odpowiednimi kodami ABS_MT_TOUCH_MAJOR. Do symulacji wyłączania ekranu podczas rozmowy w testach użyj SensorManager z obiektem mock zwracającym wartość 0 przy wywołaniu onSensorChanged.
Aby sprawdzić czujnik zbliżeniowy na urządzeniu z Androidem, otwórz aplikację Telefon, wybierz *#0*# (w Samsung) i wybierz pozycję Sensor. Po zbliżeniu palca do górnej części ekranu wartość czujnika powinna zmienić się z «Far» na «Near». Jeśli czujnik nie reaguje — wytrzyj górną część ekranu i sprawdź, czy szkło ochronne nie zasłania czujnika. W iPhone test przeprowadza się przez diagnostykę systemową w ustawieniach.
Często zadawane pytania
Najczęściej problemem jest szkło ochronne lub etui, które zasłaniają czujnik zbliżeniowy. Upewnij się, że obszar obok głośnika rozmównego nie jest zablokowany. Jeśli problem występuje na gołym telefonie — możliwy jest defekt sprzętowy lub zabrudzenie czujnika.
Czujnik znajduje się w górnej części przedniego panelu, obok głośnika rozmównego. W nowoczesnych smartfonach jest ukryty pod szkłem wyświetlacza. Można go zobaczyć, świecąc jasną latarką pod kątem — wygląda jak mały punkt lub szczelina.
Standardowymi narzędziami Androida — nie. Istnieją jednak aplikacje z dostępem przez menu inżynierskie (wybierz *#0*# na Samsung) do testowania. W niektórych urządzeniach można dostosować czułość przez tryb serwisowy.
Standardowe API czujnika zbliżeniowego zwraca tylko fakt wykrycia — 0 lub maxRange. Aby uzyskać dokładną odległość, użyj czujnika Time-of-Flight (jeśli urządzenie jest w niego wyposażone) — dostępnego przez ten sam TYPE_PROXIMITY na zgodnych urządzeniach.
Zależy od grubości i materiału szkła. Cienkie elastyczne szkła (0.15–0.2 mm) nie wpływają na działanie. Grube hartowane (0.5+ mm) mogą rozpraszać promieniowanie IR i powodować fałszywe zadziałania. Zalecane są szkła z precyzyjnym wycięciem lub czarną ramką wokół czujnika.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również