package Ġcom . github . sim on ph am . dev tiles . service . tiles Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Power Manager Ċ import Ġcom . github . sim on ph am . dev tiles . Singleton Instances ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSimon ĠPh am Ġon Ġ 6 / 2 / 1 8 . Ċ Ġ* ĠEmail : Ġsim on ph am . dn @ gmail . com Ċ Ġ*/ Ċ Ċ class ĠC affe ine Tile Helper Ġinternal Ġconstructor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠSingleton Instances . get AppContext () ĊĠĠĠ Ġprivate Ġval Ġwake Lock : ĠPower Manager . Wake Lock Ġ= ĠSingleton Instances . get Wake Lock () ĊĊĠĠĠ Ġprivate Ġval Ġm Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprivate Ġval Ġm Receiver Ġ= ĠReceiver () ĊĠĠĠ Ġprivate Ġvar Ġm Seconds Remaining : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġcount down Timer : ĠCount Down Timer ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġservice : ĠC affe ine Service ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġcreate And Start ( seconds : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠ Ġm Seconds Remaining Ġ= Ġseconds ĊĠĠĠĠĠĠĠ Ġ// Ġinfinity Ġtiming , Ġno Ġneed Ġto Ġstart Ġtimer ĊĠĠĠĠĠĠĠ Ġif Ġ( seconds Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount down Timer Ġ= Ġobject Ġ: ĠCount Down Timer (( seconds Ġ* Ġ 1 0 0 0 ). to Long (), Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Seconds Remaining Ġ= Ġ( millis Until Finished Ġ/ Ġ 1 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice ?. refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wake Lock . is Hel d ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwake Lock . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( countdown Timer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount down Timer !!. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount down Timer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠ Ġm Receiver . destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( wake Lock . is Hel d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwake Lock . release () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Value With Remaining Time (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Seconds Remaining Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ u 2 2 1 E " Ġ// Ġinfinity ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠString . format ("% 0 2 d :% 0 2 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Seconds Remaining Ġ/ Ġ 6 0 Ġ% Ġ 6 0 , Ġm Seconds Remaining Ġ% Ġ 6 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠReceiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . addAction ( Intent . ACTION _ SCREEN _ OFF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . register Receiver ( this , Ġfilter , Ġnull , Ġm Handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . unregister Receiver ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġintent !!. action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Intent . ACTION _ SCREEN _ OFF Ġ== Ġaction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdisable Ġcaffe ine Ġif Ġuser Ġforce Ġoff Ġ( power Ġbutton ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wake Lock . is Hel d ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwake Lock . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }