Foreground service. Без интерфейса.
Приложение отправляет каждые N секунд запрос на сервер, передавая некий токен и N. Параметры передаются/принимаются через Headers.
Если сервер возвращает ответ c headers:
{
"command": "set_n",
"n": "N"
}
То значение N меняется.
Если:
{
"command": "alarm",
"time": "unix_time_format"
"duration": "X" // в секундах
}
То в указанное время проигрывается звук в течение X секунд (с повторением, если X больше продолжительности самого звука). При том, если присутствует body ответа, то он декодируется как mp3 и проигрывается, иначе звук берется из папки assets.
Если нажать на notification foreground service'а, звук затихает.
Сервис должен работать постоянно и выполнять свою задачу даже если телефон в заблокированном состоянии.
Код должен быть удобочитаем, проект готовый к компиляции, а все дефолтные значения выведены в отдельный файл для дальнейшей модификации.