package Ġlink . stand en . m ichael . slide show . util Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Power Manager Ċ import Ġlink . stand en . m ichael . slide show . Auto Run Receiver Ċ import Ġlink . stand en . m ichael . slide show . Auto Shutdown Receiver Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġkotlin . time . Duration Unit Ċ import Ġkotlin . time . Experimental Time ĊĊ Ċ class ĠTools Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġturn On ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġctx . getSystem Service ( Context . POWER _ SERVICE ) Ġas ĠPower Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpm . new Wake Lock ( Power Manager . FULL _ WAKE _ LOCK Ġor ĠPower Manager . AC Q UIRE _ CA USE S _ WAKE UP , Ġ" app : My Lock "). acquire ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Experimental Time ĊĠĠĠĠĠĠĠ Ġfun Ġsetup Wake Up ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAlarm Manager Ġinstance Ġfrom Ġthe Ġsystem Ġservices ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIntent : Ġthis Ġis Ġresponsible Ġto Ġprepare Ġthe Ġandroid Ġcomponent Ġwhat ĠPending Intent Ġwill Ġstart Ġwhen Ġthe Ġalarm Ġis Ġtriggered . ĠThat Ġcomponent Ġcan Ġbe Ġanyone Ġ( activity , Ġservice , Ġbroadcast Receiver , Ġetc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIntent Ġto Ġstart Ġthe ĠBroadcast ĠReceiver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠAuto Run Receiver :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPending Intent : Ġthis Ġis Ġthe Ġpending Ġintent , Ġwhich Ġwaits Ġuntil Ġthe Ġright Ġtime , Ġto Ġbe Ġcalled Ġby ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠPending ĠIntent Ġto Ġpass Ġin ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . get Broadcast ( activity . application Context , Ġ 0 , Ġintent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Manager Ġ= Ġactivity . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . set Repe ating ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . RTC _ WAKE UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Calendar In Millis With Set Time ( Duration Unit . HOUR S . to Millis ( 1 0 ) Ġ+ ĠDuration Unit . MIN UTES . to Millis ( 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . INTERVAL _ FI F TE EN _ MIN UTES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Experimental Time ĊĠĠĠĠĠĠĠ Ġfun Ġsetup Closing App ( activity : ĠActivity ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠAuto Shutdown Receiver :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . get Broadcast ( activity . application Context , Ġ 0 , Ġintent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Manager Ġ= Ġactivity . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . set Repe ating ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . RTC _ WAKE UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Calendar In Millis With Set Time ( Duration Unit . HOUR S . to Millis ( 1 0 ) Ġ+ ĠDuration Unit . MIN UTES . to Millis ( 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . INTERVAL _ FI F TE EN _ MIN UTES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Calendar In Millis With Set Time ( time To Set : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime In Millis Ġ= ĠSystem . currentTimeMillis () Ġ+ Ġtime To Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Time Ġset : Ġ${ calendar . time In Millis }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time In Millis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }