package Ġcom . pit aya . mobile . u inspector . notification Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager . IMPORT ANCE _ HIGH Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Pending Intent . FLAG _ ONE _ SHOT Ċ import Ġandroid . app . Pending Intent . FLAG _ UPDATE _ CURRENT Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Compat . PRIORITY _ HIGH Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġcom . pit aya . mobile . u inspector . R Ċ import Ġcom . pit aya . mobile . u inspector . U Inspector Ċ import Ġcom . pit aya . mobile . u inspector . state . U Inspector State Ċ import Ġcom . pit aya . mobile . u inspector . util . Lib Name Ċ Ċ /** Ċ Ġ* Ġ@ author ĠY ves Che ung Ċ Ġ* Ġ 2 0 2 0 / 1 2 / 2 9 Ċ Ġ*/ Ċ @ Restrict To ( Restrict To . Scope . LIBRARY ) Ċ class ĠU Inspector Notification Service Ġ: ĠService () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠU Inspector . currentState . isRunning ĊĠĠĠĠĠĠĠ Ġval Ġpending State Ġ= Ġintent ?. getBoolean Extra ( PENDING _ RUNNING , Ġcurrent State ) Ġ?: Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġstart Foreground ( notification Id , Ġcreate Notification ( pending State )) ĊĊĠĠĠĠĠĠĠ ĠU Inspector . change State Inner ( pending State ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification ( isRunning : ĠBoolean ): ĠNotification Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLib Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . u inspector _ notification _ channel _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager Compat . from ( this ). create Notification Channel ( channel ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( this , Ġchannel . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġpackage Manager . getApplication Info ( packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠappName Ġ= ĠgetString ( app . label Res ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) ĠR . string . u inspector _ notification _ channel _ stop _ title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . string . u inspector _ notification _ channel _ start _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠappName ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) ĠR . string . u inspector _ notification _ channel _ stop _ message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . string . u inspector _ notification _ channel _ start _ message ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġcreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , Ġinfo , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) ĠR . drawable . notification _ stop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . drawable . notification _ start ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnotification Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( app . icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Info ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom ContentView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( Notification Compat . Decorated Custom View Style ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getService ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠU Inspector Notification Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( PENDING _ RUNNING , Ġ! isRunning ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFLAG _ ONE _ SHOT Ġor ĠFLAG _ UPDATE _ CURRENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( PRIORITY _ HIGH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Notification Sil ent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate View ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġinfo : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġicon : ĠInt ĊĠĠĠ Ġ): ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠRemote Views ( packageName , ĠR . layout . u inspector _ notification _ channel _ view ) ĊĠĠĠĠĠĠĠ Ġroot . setText View Text ( R . id . notification _ title , Ġtitle ) ĊĠĠĠĠĠĠĠ Ġroot . setText View Text ( R . id . notification _ info , Ġinfo ) ĊĠĠĠĠĠĠĠ Ġroot . set ImageView Resource ( R . id . notification _ btn , Ġicon ) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTo Ġtoggle Ġthe Ġvalue Ġof Ġ[ U Inspector State . isRunning ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP ENDING _ RUNNING Ġ= Ġ" pending _ start " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġnotification Id Ġ= Ġ 2 3 3 3 3 ĊĠĠĠ Ġ} Ċ }