/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠBy ĠG eek s ĠEmp ire . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠE li as ĠF azel Ċ Ġ* ĠLast Ġmodified Ġ 8 / 2 9 / 2 0 Ġ 3 : 5 8 ĠAM Ċ Ġ* Ċ Ġ* ĠLicensed ĠUnder ĠMIT ĠLicense . Ċ Ġ* Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġnet . ge ek st ools . float short . PRO . Automation . Al arms Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġnet . ge ek st ools . float short . PRO . Automation . Al arms . Utils . Functions Class Al arms Ċ import Ġnet . ge ek st ools . float short . PRO . Bind Services Ċ import Ġnet . ge ek st ools . float short . PRO . Utils . Functions . Debug Ċ import Ġnet . ge ek st ools . float short . PRO . Utils . Functions . File IO Ċ import Ġnet . ge ek st ools . float short . PRO . Utils . Functions . Functions Class Legacy Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠSetup Al arms Ġ: ĠService () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfunctions Class Legacy : ĠFunctions Class Legacy Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFunctions Class Legacy ( application Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfunctions Class Al arms : ĠFunctions Class Al arms Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFunctions Class Al arms ( application Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfile IO : ĠFile IO Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFile IO ( application Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnew Alarm Time Ġ= ĠCalendar . getInstance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnext Set Time : ĠString ĊĠĠĠ Ġprivate Ġvar Ġnext Position Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġtimes Clock s : ĠArrayList < String >? Ġ= ĠArrayList < String >() ĊĊĠĠĠ Ġprivate Ġvar Ġhours Digits Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġminutes Digits : Int Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġintent ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Time Ġ= Ġintent . getString Extra (" time ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Position Ġ= Ġintent . getInt Extra (" position ", Ġ- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimes Clock s Ġ= Ġfile IO . readFile Lines As List (". times . clock s ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimes Clock s ?. let Ġ{ Ġtimes Clock s Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( package Position Ġ+ Ġ 1 ) Ġ== Ġtimes Clock s . size ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// last Ġone Ġreset Ġto Ġfirst Ġline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġtimes Clock s [ 0 ]. split (": "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhours Digits Ġ= Ġtime [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Digits Ġ= Ġtime [ 1 ]. toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . HOUR _ OF _ DAY ] Ġ= Ġhours Digits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . MINUTE ] Ġ= Ġminutes Digits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . SECOND ] Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Set Time Ġ= Ġtimes Clock s [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Position Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġthe Ġnext Ġline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġtimes Clock s [ package Position Ġ+ Ġ 1 ]. split (": "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhours Digits Ġ= Ġtime [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Digits Ġ= Ġtime [ 1 ]. toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . HOUR _ OF _ DAY ] Ġ= Ġhours Digits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . MINUTE ] Ġ= Ġminutes Digits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alarm Time [ Calendar . SECOND ] Ġ= Ġ 1 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Set Time Ġ= Ġtimes Clock s [ package Position Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Position Ġ= Ġpackage Position Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( STOP _ FO REG ROUND _ REMOVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Setup Al arms . stop Self () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTART _ NOT _ STICK Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunctions Class Al arms . initial Alarm ( new Alarm Time , Ġnext Set Time , Ġnext Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebug . Print Debug (" *** ĠSetting ĠUp ĠNew / Next ĠAlarm Ġ*** ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠService . START _ NOT _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( 3 3 3 , Ġfunctions Class Legacy . bind Service Notification (), ĠSTOP _ FO REG ROUND _ REMOVE ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( 3 3 3 , Ġfunctions Class Legacy . bind Service Notification ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground Service ( Intent ( application Context , ĠBind Services :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( Intent ( application Context , ĠBind Services :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( STOP _ FO REG ROUND _ REMOVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis @ Setup Al arms . stop Self () ĊĠĠĠ Ġ} Ċ }