package Ġcom . rain . rem yn d . alarm Ċ Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġcom . rain . rem yn d . alarm . scheduler . Alarm Ċ import Ġcom . rain . rem yn d . alarm . scheduler . Alarm Scheduler Ċ Ċ class ĠAlarm Scheduler Impl ( private Ġval Ġcontext : ĠContext ) Ġ: ĠAlarm Scheduler Ġ{ ĊĠĠĠ Ġprivate Ġval Ġalarm Manager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Pending Intent ( alarm : ĠAlarm ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprepare Intent ( alarm . id ) Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( MESSAGE , Ġalarm . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ID , Ġalarm . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( V IB RATE , Ġalarm . vi br ate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( INTERVAL , Ġalarm . interval Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( TYPE , ĠReceiver Type . ALARM . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Intent ( id : ĠLong , Ġfactory : Ġ( Intent ) Ġ-> ĠIntent ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠAlarm Receiver :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let ( factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . get Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ CANCEL _ CURRENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel ( ids : ĠSet < Long >) Ġ{ ĊĠĠĠĠĠĠĠ Ġids . forEach Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . cancel ( prepare Intent ( id ) Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel ( alarm : ĠAlarm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm Manager . cancel ( to Pending Intent ( alarm )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġschedule ( alarm : ĠAlarm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm Manager . cancel ( to Pending Intent ( alarm )) ĊĠĠĠĠĠĠĠ Ġalarm Manager . set ( Alarm Manager . RTC _ WAKE UP , Ġalarm . trigger At , Ġto Pending Intent ( alarm )) ĊĠĠĠ Ġ} Ċ } Ċ