01 · Идея и задача
Чем ближе телефон к глазам, тем сильнее они работают в режиме ближнего видения — а это один из факторов развития близорукости, особенно у детей и подростков. Рекомендация офтальмологов простая: держать экран не ближе 30 см. Но в реальной жизни про это никто не помнит. Идея — переложить контроль на само устройство: пусть оно само замечает, что телефон поднесён слишком близко, и мягко напоминает отодвинуться.
Задача: сделать приложение, которое в фоне определяет расстояние от лица до экрана через фронтальную камеру, сравнивает его с безопасным порогом и в нужный момент показывает заметное предупреждение — поверх любого приложения, которым человек пользуется. При этом критично важно сохранить приватность: никакой записи и отправки изображения, всё распознавание — локально на устройстве.



02 · Что было сложно
- Измерить расстояние обычной камерой. У телефона нет дальномера — есть только картинка с фронталки. Расстояние оценивается по результатам распознавания лица в Google ML Kit (размер и геометрия лица в кадре) с калибровкой под конкретное устройство и пользователя. Это работа на потоке кадров в реальном времени, а не разовый замер.
- Предупреждение поверх любого приложения. Польза появляется только если индикатор виден, когда человек сидит в соцсети или читает, а не в самом приложении. Поэтому предупреждение рисуется через системный overlay поверх других приложений — с отдельным разрешением, фоновой работой и автозапуском, чтобы контроль не выключался сам.
- Фон, батарея и автозапуск. Камера и распознавание, работающие в фоне, — это нагрузка на батарею и зона жёстких ограничений ОС. Пришлось аккуратно работать с разрешениями, оптимизацией батареи и автозапуском, следить за состоянием камеры и восстанавливать её, чтобы сервис был стабильным и предсказуемым.
- Приватность как требование, а не опция. Камера смотрит на лицо постоянно — поэтому принципиально, что изображение нигде не сохраняется и никуда не передаётся. ML Kit отрабатывает локально, наружу уходит только факт «близко / нормально». Это снимает главный страх пользователя от приложения, которое «всё время смотрит».
- Калибровка и гибкость порога. Безопасная дистанция у всех разная, поэтому есть выбор стандартных значений и собственная настройка, а ещё — выбор, как именно показывать предупреждение: рамкой вокруг экрана или полосой сверху, чтобы подсказка была заметной, но не раздражающей.
Главная инженерная задача — оценить расстояние до экрана обычной фронтальной камерой и предупредить поверх любого приложения, не сохраняя и не передавая ни одного кадра.
03 · Как это работает
Камера и расчёт дистанции
После выдачи разрешений приложение запускает фоновый контроль: фронтальная камера передаёт кадры в Google ML Kit, тот находит лицо, а приложение по его геометрии оценивает расстояние до экрана и сравнивает с выбранным порогом. На главном экране видно текущее состояние и быстрый доступ к запуску и настройкам.
Безопасный порог и предупреждение
Базовая рекомендация — не ближе 30 см; порог можно настроить под себя или выбрать из стандартных значений. Когда телефон оказывается ближе порога, появляется предупреждение и подсказка отодвинуть устройство; за заметность отвечает выбранная визуализация.
Визуализация поверх экрана
Предупреждение показывается поверх любого приложения через системный overlay. Можно выбрать вид индикатора — рамка по периметру экрана или полоса сверху, — чтобы сигнал был заметен в любой ситуации и при этом не мешал пользоваться телефоном.
04 · Результат
Получился рабочий прототип утилиты для здоровья глаз: фоновый контроль расстояния через камеру и ML Kit, настраиваемый безопасный порог, предупреждение системным индикатором поверх любого приложения, выбор визуализации и локальные уведомления. Приложение собрано на Flutter и работает под iOS и Android.
Ключевое отличие от похожих утилит — вся обработка идёт на устройстве: камера ничего не записывает и не передаёт, наружу уходит только состояние «близко / нормально». Firebase используется для служебных функций и уведомлений. Это внутренний R&D-продукт студии, на котором обкатаны работа с камерой, on-device-распознавание лица, системные overlay и фоновые сервисы.
05 · Что дальше
Планы — точнее калибровать дистанцию под устройство и пользователя, добавить статистику (сколько времени экран был слишком близко), детский режим и родительский контроль, гибкие сценарии напоминаний и оформление под публикацию в сторах. Архитектура с фоновым сервисом и overlay позволяет наращивать сценарии, не меняя ядро.
Наработки этого продукта — камера, Google ML Kit, системные overlay и фоновые сервисы — переиспользуются в клиентских проектах, где нужно компьютерное зрение на устройстве или работа поверх других приложений.