Приложение получает данные с датчиков телефона (акселерометр). Определяет количество двигательной активности (в фазе быстрого сна человек может ворочаться). Рассчитывается цикличность повторений фаз, и в нужное время (быстрый сон) срабатывает будильник.