package Ġcom . mr k ost ua . math alarm . al arms . math Alarm . services . display Alarm Service Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . Message Ċ import Ġcom . mr k ost ua . math alarm . al arms . math Alarm . display Alarm . Display Alarm Activity Ċ import Ġcom . mr k ost ua . math alarm . al arms . math Alarm . re ceiv ers . Alarm Receiver Ċ import Ġcom . mr k ost ua . math alarm . injection s . scope . Display Alarm Service Scope Ċ import Ġcom . mr k ost ua . math alarm . tools . Constant Values Ċ import Ġcom . mr k ost ua . math alarm . tools . Notification Tools Ċ import Ġdagger . android . D agger Service Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author ĠK ost ian ty n ĠP ry sia zh ny i Ġon Ġ 4 / 1 / 2 0 1 8 . Ċ Ġ*/ Ċ @ Display Alarm Service Scope Ċ public Ġclass ĠDisplay Alarm Service Ġ: ĠD agger Service () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnotification Id Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval Ġhandle Service Sil ent Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval Ġhandle Deep Wake Up Finished Playing Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠCustom Handler ( this ) ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġpublic Ġlateinit Ġvar Ġnotifications Tools : ĠNotification Tools ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġpublic Ġlateinit Ġvar Ġpresenter : ĠDisplay Alarm Service Contract . Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Alarm Display Activity () ĊĠĠĠĠĠĠĠ Ġplay Ring tone () ĊĊĠĠĠĠĠĠĠ Ġstart Foreground ( notification Id , Ġnotifications Tools . sn oo ze Notification ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠService . START _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdisable Handler Sil ence K iller ( handle Service Sil ent ) ĊĠĠĠĠĠĠĠ Ġdisable Handler Sil ence K iller ( handle Deep Wake Up Finished Playing ) ĊĠĠĠĠĠĠĠ Ġpresenter . stop Playing Ring tone () ĊĠĠĠĠĠĠĠ Ġpresenter . release Objects () ĊĠĠĠĠĠĠĠ Ġnotifications Tools . cancel Notification ( notification Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Ring tone () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . get Deep Wake Up State ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . play Deep Wake Up Ring tone () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Handler Deep Wake Up () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . play Ring tone () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Handler Sil ence K iller () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Alarm Display Activity () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠDisplay Alarm Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenable Handler Sil ence K iller () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage Delayed ( handler . obtain Message ( handle Service Sil ent ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstant Values . ALARM _ TIMEOUT _ MILLISECONDS ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenable Handler Deep Wake Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage Delayed ( handler . obtain Message ( handle Deep Wake Up Finished Playing ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstant Values . ALARM _ DE EP _ WAKE _ UP _ TIMEOUT _ MILLISECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisable Handler Sil ence K iller ( what : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . remove Messages ( what ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCustom Handler ( display Alarm Service : ĠDisplay Alarm Service ) Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġweak Reference : ĠWeak Reference < Display Alarm Service > Ġ= ĠWeak Reference ( display Alarm Service ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Alarm Service Ġ= Ġweak Reference . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( display Alarm Service Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg ?. what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . handle Service Sil ent Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . sn oo ze Alarm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . stop Self () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . handle Deep Wake Up Finished Playing Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . presenter . stop Playing Ring tone () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . enable Handler Sil ence K iller () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Alarm Service . presenter . play Ring tone () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsn oo ze Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Broadcast ( Intent ( Constant Values . S NO O ZE _ ACTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Class ( this , ĠAlarm Receiver :: class . java )) ĊĠĠĠ Ġ} Ċ Ċ }