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
)