package Ġcom . rust fish er . tutorial 2 0 2 0 . service . foreground Ċ Ċ import Ġandroid . app .* Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . util . Log Ċ import Ġcom . rust fish er . tutorial 2 0 2 0 . R Ċ Ċ /** Ċ Ġ* Ġ çĶ¨æĿ¥ æ¼Ķ ç¤º ĠFore ground ĠService Ċ Ġ*/ Ċ class ĠFore ground Service 1 Ġ: ĠService () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" rf Dev Foreground 1 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate Ġ${ Thread . currentThread ()} Ġrust fish er . com ") ĊĠĠĠĠĠĠĠ Ġregister Receiver ( m Receiver , ĠIntent Filter (" stop - foreground - 1 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Bind Ġ${ Thread . currentThread () }") ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onStart Command Ġflags :$ flags , Ġstart Id :$ start Id Ġ[$ this ] Ġ${ Thread . currentThread () }") ĊĊĠĠĠĠĠĠĠ Ġval Ġpending Intent : ĠPending Intent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠFore ground Demo Act :: class . java ). let Ġ{ Ġnotification Intent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( this , Ġ 0 , Ġnotification Intent , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchan Id Ġ= Ġ" f - channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchan Ġ= ĠNotification Channel ( chan Id , Ġ" åīį åı° æľįåĬ¡ channel ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchan . light Color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchan . lock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PRIVATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . create Notification Channel ( chan ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" æľįåĬ¡ è°ĥçĶ¨ start Foreground ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification : ĠNotification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . Builder ( application Context , Ġchan Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" Rust Fish er åīį åı° æľįåĬ¡ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text (" https :// an . rust fish er . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . f _ z an _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( 1 , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ"${ Build . VERSION . SDK _ INT } Ġ< ĠO ( API Ġ 2 6 ) Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Destroy Ġ[ ${ this . java Class . canonical Name }] Ġ${ Thread . currentThread () }") ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( m Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Receive : Ġ$ intent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġintent . action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" stop - foreground - 1 " Ġ== Ġaction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Foreground ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }