package Ġig rek . force aw aken . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġig rek . force aw aken . R Ċ import Ġig rek . force aw aken . alarm . Alarm Manager Service Ċ import Ġig rek . force aw aken . alarm . Alarm Trigger Ċ import Ġig rek . force aw aken . alarm . Al arms Config Ċ import Ġig rek . force aw aken . info . Ui Info Service Ċ import Ġig rek . force aw aken . info . logger . LoggerFactory Ċ import Ġig rek . force aw aken . inject . Lazy Extractor Ċ import Ġig rek . force aw aken . inject . Lazy Inject Ċ import Ġig rek . force aw aken . inject . app Factory Ċ import Ġig rek . force aw aken . layout . Common Layout Ċ import Ġig rek . force aw aken . layout . navigation . Navigation Menu Controller Ċ import Ġig rek . force aw aken . persistence . Al arms Persistence Service Ċ import Ġig rek . force aw aken . ring tone . Alarm Player Service Ċ import Ġig rek . force aw aken . ring tone . Ring tone Ċ import Ġig rek . force aw aken . ring tone . Ring tone Manager Service Ċ import Ġig rek . force aw aken . sensors . V ibr ator Service Ċ import Ġig rek . force aw aken . system . WindowManager Service Ċ import Ġig rek . force aw aken . time . Alarm Time Service Ċ import Ġig rek . force aw aken . volume . Noise Detector Service Ċ import Ġig rek . force aw aken . volume . Volume Calculator Service Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . joda . time . DateTime Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠAw aken Activity Layout ( ĊĠĠĠ Ġactivity : ĠLazy Inject < Activity > Ġ= Ġapp Factory . activity , ĊĠĠĠ Ġwindow Manager Service : ĠLazy Inject < WindowManager Service > Ġ= Ġapp Factory . window Manager Service , ĊĠĠĠ Ġnavigation Menu Controller : ĠLazy Inject < Navigation Menu Controller > Ġ= Ġapp Factory . navigation Menu Controller , ĊĠĠĠ Ġui Info Service : ĠLazy Inject < Ui Info Service > Ġ= Ġapp Factory . ui Info Service , ĊĠĠĠ Ġal arms Persistence Service : ĠLazy Inject < Al arms Persistence Service > Ġ= Ġapp Factory . al arms Persistence Service , ĊĠĠĠ Ġcommon Layout : ĠLazy Inject < Common Layout > Ġ= Ġapp Factory . common Layout , ĊĠĠĠ Ġalarm Time Service : ĠLazy Inject < Alarm Time Service > Ġ= Ġapp Factory . alarm Time Service , ĊĠĠĠ Ġnoise Detector Service : ĠLazy Inject < Noise Detector Service > Ġ= Ġapp Factory . noise Detector Service , ĊĠĠĠ Ġalarm Player Service : ĠLazy Inject < Alarm Player Service > Ġ= Ġapp Factory . alarm Player Service , ĊĠĠĠ Ġvi br ator Service : ĠLazy Inject < V ibr ator Service > Ġ= Ġapp Factory . vi br ator Service , ĊĠĠĠ Ġring tone Manager Service : ĠLazy Inject < Ring tone Manager Service > Ġ= Ġapp Factory . ring tone Manager Service , ĊĠĠĠ Ġvolume Calculator Service : ĠLazy Inject < Volume Calculator Service > Ġ= Ġapp Factory . volume Calculator Service , ĊĠĠĠ Ġalarm Manager Service : ĠLazy Inject < Alarm Manager Service > Ġ= Ġapp Factory . alarm Manager Service , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġactivity Ġby ĠLazy Extractor ( activity ) ĊĠĠĠ Ġprivate Ġval Ġwindow Manager Service Ġby ĠLazy Extractor ( window Manager Service ) ĊĠĠĠ Ġprivate Ġval Ġnavigation Menu Controller Ġby ĠLazy Extractor ( navigation Menu Controller ) ĊĠĠĠ Ġprivate Ġval Ġui Info Service Ġby ĠLazy Extractor ( ui Info Service ) ĊĠĠĠ Ġprivate Ġval Ġal arms Persistence Service Ġby ĠLazy Extractor ( al arms Persistence Service ) ĊĠĠĠ Ġprivate Ġval Ġcommon Layout Ġby ĠLazy Extractor ( common Layout ) ĊĠĠĠ Ġprivate Ġval Ġalarm Time Service Ġby ĠLazy Extractor ( alarm Time Service ) ĊĠĠĠ Ġprivate Ġval Ġnoise Detector Service Ġby ĠLazy Extractor ( noise Detector Service ) ĊĠĠĠ Ġprivate Ġval Ġalarm Player Ġby ĠLazy Extractor ( alarm Player Service ) ĊĠĠĠ Ġprivate Ġval Ġvi br ator Service Ġby ĠLazy Extractor ( vi br ator Service ) ĊĠĠĠ Ġprivate Ġval Ġring tone Manager Ġby ĠLazy Extractor ( ring tone Manager Service ) ĊĠĠĠ Ġprivate Ġval Ġvolume Calculator Service Ġby ĠLazy Extractor ( volume Calculator Service ) ĊĠĠĠ Ġprivate Ġval Ġalarm Manager Service Ġby ĠLazy Extractor ( alarm Manager Service ) ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . logger ĊĠĠĠ Ġprivate Ġval Ġrandom Ġ= ĠRandom () ĊĊĠĠĠ Ġprivate Ġval Ġwake Up Infos Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġ" Kill ĠZ ombie Ġprocess !", ĊĠĠĠĠĠĠĠ Ġ" WAKE ĠUP !", Ċ // ĠĠĠĠĠĠĠ Ġ" RI SE ĠAND ĠSH INE , ĠYOU ĠM OTHER FU CKER !! !", Ċ // ĠĠĠĠĠĠĠ Ġ" W staw aj , ĠN ie ĠP ier dol !", ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġvar Ġfake Time Label : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġwake Up Label : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠAL ARM _ V IB RATION _ PERIOD : ĠLong Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġprivate Ġval ĠAL ARM _ V IB RATION _ PWM Ġ= Ġ 0 . 5 ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Ring tone : ĠRing tone ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġring tone ListAdapter : ĠArray Adapter < Ring tone >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġactivate Alarm Time : ĠDateTime ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Initializing Ġapplication ...") ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager Service . hide Task bar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Aw aken Activity ĠLayout Ġhas Ġbeen Ġinitialized .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivate Alarm Time Ġ= ĠDateTime . now () ĊĠĠĠĠĠĠĠ Ġshow Fullscreen When Locked () ĊĊĠĠĠĠĠĠĠ Ġactivity . set ContentView ( R . layout . aw aken _ main ) ĊĠĠĠĠĠĠĠ Ġcommon Layout . init () ĊĠĠĠĠĠĠĠ Ġnavigation Menu Controller . init () ĊĊĠĠĠĠĠĠĠ Ġshow Fullscreen When Locked () ĊĠĠĠĠĠĠĠ Ġfake Time Label Ġ= Ġactivity . findViewById ( R . id . fake Time ) ĊĠĠĠĠĠĠĠ Ġwake Up Label Ġ= Ġactivity . findViewById ( R . id . wake Up Label ) ĊĊĠĠĠĠĠĠĠ Ġbootstrap Alarm () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Fullscreen When Locked () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġkey guard Manager : ĠKey guard Manager Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . getSystem Service ( Context . KEY GU ARD _ SERVICE ) Ġas ĠKey guard Manager Ċ // ĠĠĠĠĠĠĠ Ġkey guard Manager . request Dismiss Key guard ( activity , Ġnull ) ĊĠĠĠĠĠĠĠ Ġwindow Manager Service . setFullscreen ( true ) ĊĠĠĠĠĠĠĠ Ġactivity . set Show When Locked ( true ) ĊĠĠĠĠĠĠĠ Ġactivity . set Turn Screen On ( true ) ĊĠĠĠĠĠĠĠ Ġwindow Manager Service . show App When Locked () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbootstrap Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfake Time Str : ĠString Ġ= Ġalarm Time Service . fake Current Time . toString (" HH : mm ") ĊĠĠĠĠĠĠĠ Ġfake Time Label ?. text Ġ= Ġfake Time Str ĊĠĠĠĠĠĠĠ Ġval Ġalarm Id Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġwake Up Label ?. text Ġ= Ġwake Up Infos [ random . nextInt ( wake Up Infos . size )] ĊĠĠĠĠĠĠĠ Ġ// Ġmeasure Ġsurrounding Ġlo ud ness Ġlevel ĊĠĠĠĠĠĠĠ Ġnoise Detector Service . measure Noise Level ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠNo ise Detector Service . Noise Level Measure Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( amplitude Db : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alarm Playing ( amplitude Db , Ġalarm Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart Alarm Playing ( noise Level : ĠDouble , Ġalarm Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġstop Ġthe Ġprevious Ġalarm ĊĠĠĠĠĠĠĠ Ġalarm Player . stop Alarm () ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 2 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 2 ) ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 3 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 2 ) ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 4 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 2 ) ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 5 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 5 ) ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 6 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 5 ) ĊĠĠĠĠĠĠĠ Ġschedule Volume Boost ( alarm Id , Ġ( 1 7 0 Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 . 5 ) ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm Player . is Playing Ġ&& Ġalarm Player . alarm Id Ġ== Ġalarm Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Player . volume Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Alarm Ġis Ġstill Ġplaying Ġ- Ġvolume Ġlevel Ġboost ed Ġto Ġ" Ġ+ Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ( 1 8 0 Ġ* Ġ 1 0 0 0 ). to Long ()) ĊĠĠĠĠĠĠĠ Ġval Ġvi br ations Boost er : ĠRunnable Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm Player . is Playing Ġ&& Ġalarm Player . alarm Id Ġ== Ġalarm Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Alarm Ġis Ġstill Ġplaying Ġ- Ġturning Ġon Ġvi br ations ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate (( ALARM _ V IB RATION _ PWM Ġ* ĠAL ARM _ V IB RATION _ PERIOD ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ( this , ĠAL ARM _ V IB RATION _ PERIOD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ( vi br ations Boost er , Ġ( 2 0 0 Ġ* Ġ 1 0 0 0 ). to Long ()) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ring tone Ġ= Ġring tone Manager . random Ring tone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Current ĠRing tone : Ġ${ current Ring tone ?. name } Ġ(${ current Ring tone ?. file ?. absolute Path }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolume : ĠDouble Ġ= Ġvolume Calculator Service . calc Final Volume ( noise Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Alarm Ġvolume Ġlevel : Ġ$ volume ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Uri Ġring Uri Ġ= ĠUri . parse (" android . resource ://" Ġ+ Ġget PackageName () Ġ+ Ġ"/" Ġ+ ĠR . raw . hop es _ quiet ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Player . play Alarm ( current Ring tone !!. uri , Ġvolume ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Player . alarm Id Ġ= Ġalarm Id ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġring ton es : ĠList < Ring tone ?> Ġ= Ġring tone Manager . all Ring ton es ĊĠĠĠĠĠĠĠ Ġring ton es Ġ= Ġring ton es . sh uffled () Ġ// Ġthat 's Ġthe Ġev ile st Ġthing Ġi Ġcan Ġimagine ĊĠĠĠĠĠĠĠ Ġring tone ListAdapter Ġ= ĠArray Adapter < Ring tone >( activity , ĠR . layout . list _ item , Ġring ton es ) ĊĠĠĠĠĠĠĠ Ġval ĠlistView : ĠListView Ġ= Ġactivity . findViewById ( R . id . ring ton es _ answer _ list ) ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġring tone ListAdapter ĊĠĠĠĠĠĠĠ ĠlistView . on ItemClickListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdapter View . On ItemClickListener Ġ{ Ġadapter 1 : ĠAdapter View <* >, Ġv : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġadapter 1 . getItem At Position ( position ) Ġas ĠRing tone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ring tone Answer ( selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġschedule Volume Boost ( alarm Id : ĠLong , Ġwhen Ms : ĠLong , Ġvol Multiplier : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm Player . is Playing Ġ&& Ġalarm Player . alarm Id Ġ== Ġalarm Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Vol : ĠDouble Ġ= Ġalarm Player . volume Ġ* Ġvol Multiplier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Player . volume Ġ= Ġnew Vol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Alarm Ġis Ġstill Ġplaying Ġ- Ġvolume Ġlevel Ġboost ed Ġto Ġ$ new Vol ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġwhen Ms ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ring tone Answer ( selected : ĠRing tone ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Ġ== Ġcurrent Ring tone ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Answer () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrong Answer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcorrect Answer () Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm Player . stop Alarm () ĊĠĠĠĠĠĠĠ Ġactivate Alarm Time Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġui Info Service . show Toast (" Good , Ġnow Ġget Ġup !") ĊĠĠĠĠĠĠĠ Ġval Ġnear Al arms Ġ= Ġget Up coming Al arms () ĊĠĠĠĠĠĠĠ Ġif Ġ( near Al arms . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Last Ġalarm Ġstopped ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Last Alarm Dialog () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn oo ze Al arms Dialog ( near Al arms ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpost Exit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Last Alarm Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" ATT ENT ION !" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" This Ġwas Ġthe Ġlast Ġalarm . ĠNo Ġmore Ġsn oo zes . ĠWA KE ĠUP !! !" ĊĠĠĠĠĠĠĠ Ġval Ġalert Builder : ĠAlertDialog . Builder Ġ= ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠ Ġalert Builder . setMessage ( message ) ĊĠĠĠĠĠĠĠ Ġalert Builder . setTitle ( title ) ĊĠĠĠĠĠĠĠ Ġalert Builder . set Neutral Button (" OK ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Builder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġalert : ĠAlertDialog Ġ= Ġalert Builder . create () ĊĠĠĠĠĠĠĠ Ġalert . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . get Button ( AlertDialog . BUTTON _ NE UT R AL ). setTextColor (- 0 x 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert . show () ĊĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 1 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Sn oo ze Al arms Dialog ( up coming Al arms : ĠList < Alarm Trigger >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" Up coming ĠSn oo ze " ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( up coming Al arms . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" There Ġis Ġ 1 Ġupcoming Ġsn oo ze . ĠYou Ġcan Ġfall Ġas leep Ġor Ġcancel Ġthem " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" There Ġare Ġ${ up coming Al arms . size } Ġupcoming Ġsn oo zes . ĠYou Ġcan Ġfall Ġas leep Ġor Ġcancel Ġthem ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġalert Builder : ĠAlertDialog . Builder Ġ= ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠ Ġalert Builder . setMessage ( message ) ĊĠĠĠĠĠĠĠ Ġalert Builder . setTitle ( title ) ĊĠĠĠĠĠĠĠ Ġalert Builder . set Positive Button (" Fall Ġas leep ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Builder . set Neutral Button (" Cancel Ġall ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Up coming Sn oo zes ( up coming Al arms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Builder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġalert : ĠAlertDialog Ġ= Ġalert Builder . create () ĊĠĠĠĠĠĠĠ Ġalert . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost Exit () Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm Manager Service . repl en ish All Re pet itive Al arms () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrong Answer () Ġ{ ĊĠĠĠĠĠĠĠ Ġui Info Service . show Toast (" Wrong Ġanswer , Ġyou Ġmor on !") ĊĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġring ton es : ĠList < Ring tone ?> Ġ= Ġring tone Manager . all Ring ton es . sh uffled () ĊĠĠĠĠĠĠĠ Ġring tone ListAdapter ?. clear () ĊĠĠĠĠĠĠĠ Ġring tone ListAdapter ?. addAll ( ring ton es ) ĊĠĠĠĠĠĠĠ Ġring tone ListAdapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġal arms Ġfrom Ġnear Ġfuture Ġ( now Ġ< Ġalarm Ġtime Ġ< Ġnext Ġhour ) ĊĠĠĠ Ġprivate Ġfun Ġget Up coming Al arms (): ĠList < Alarm Trigger > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġal arms Config : ĠAl arms Config Ġ= Ġal arms Persistence Service . read Al arms Config () ĊĠĠĠĠĠĠĠ Ġval Ġalarm Triggers Ġ= Ġal arms Config . alarm Triggers ĊĠĠĠĠĠĠĠ Ġ// Ġal arms Ġfrom Ġnear Ġfuture Ġ( now Ġ< Ġalarm Ġtime Ġ< Ġnext Ġhour ) ĊĠĠĠĠĠĠĠ Ġreturn Ġalarm Triggers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . trigger Time . is After Now Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . trigger Time . is Before ( DateTime . now (). plus Hours ( 1 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Up coming Sn oo zes ( up coming Al arms : ĠList < Alarm Trigger >) Ġ{ ĊĠĠĠĠĠĠĠ Ġupcoming Al arms . forEach Ġ{ Ġalarm Trigger Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Trigger . isActive Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager Service . cancel Alarm ( alarm Trigger ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( up coming Al arms . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" Cancelled Ġ 1 Ġupcoming Ġalarm ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Cancelled Ġ${ up coming Al arms . size } Ġupcoming Ġal arms ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġui Info Service . show Toast ( message ) ĊĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 1 0 0 0 ) ĊĠĠĠ Ġ} Ċ } Ċ