android wear: как сделать запуск службы в определённое время

Набросал приложение для часов (wear os 4). При нажатии на кнопку play запускается служба, которая начинает анализировать данные от акселерометра, и если объединённое по всем осям значение превышает некий порог, включается на короткое время вибрация. Всё работает хорошо, даже при выключенном экране. Но теперь я захотел реализовать запуск и останов службы в определённый момент времени. В настройках есть время запуска и время останова (ЧЧ:ММ). Как это лучше реализовать?

Вот сам проект, если что, пишу под андроид впервые: https://github.com/zenbooster/phasig


Ответы (1 шт):

Автор решения: zenbooster

Получилось через AlarmManager:

class AlarmReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        var am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        am.moveTaskToFront(Core.taskId, 0)

        context.startForegroundService(Core.mysvcIntent)
    }
}
val myAlarmIntent: Intent by lazy { Intent(ctx, AlarmReceiver::class.java) }
val pia = PendingIntent.getBroadcast(
    ctx,
    0,
    myAlarmIntent,
    PendingIntent.FLAG_CANCEL_CURRENT or
            PendingIntent.FLAG_IMMUTABLE
)

alarmManager?.setAlarmClock(
    AlarmManager.AlarmClockInfo(
        System.currentTimeMillis() + delay,
        null
    ), pia
)
→ Ссылка