package Ġjp . cor dea . process observer Ċ Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . support . v 7 . app . Notification Compat Ċ import Ġkotlinx . coroutines . experimental . Common Pool Ċ import Ġkotlinx . coroutines . experimental . launch Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . schedule Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠY oshi hi ro ĠT an aka Ġon Ġ 2 0 1 7 / 0 7 / 0 6 . Ċ Ġ*/ Ċ class ĠWatch Service Ġ: ĠService () Ġ{ ĊĊĠĠĠ Ġvar Ġis Running Changed : Ġ( Boolean ) Ġ-> ĠUnit Ġ= Ġ{ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( p 0 : ĠIntent ?): ĠI Binder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWatch Binder ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġapplication Context . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ĊĠĠĠĠĠĠĠ Ġis Running Changed ( true ) ĊĊĠĠĠĠĠĠĠ Ġlaunch ( Common Pool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule ( 0 , ĠWait M ills ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . running App Processes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"% d Ġ% s ". format ( it . pid , Ġit . process Name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠEnvironment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get External Storage Public Directory ( Environment . DIRECTORY _ DOCUMENT S ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( dir , ĠFileName ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir . mkdir () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġ" ------------ \ n " Ġ+ ĠDate (). toString () Ġ+ Ġ"\ n " Ġ+ Ġtext Ġ+ Ġ"\ n ------------ \ n " ĊĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . append Text ( t ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getActivity ( this , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠMainActivity :: class . java ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġstart Foreground ( start Id , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġreturn ĠService . START _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġis Running Changed ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠWait M ills Ġ= Ġ 2 0 0 0 L ĊĊĠĠĠĠĠĠĠ Ġval ĠFileName Ġ= Ġ" process _ observer . log " ĊĠĠĠ Ġ} Ċ }