package Ġeu . car aus . apps fl ast fm . ui . common . notification Ċ Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ import Ġandroid . support . v 4 . app . Notification Manager Compat Ċ import Ġeu . car aus . apps fl ast fm . R Ċ import Ġeu . car aus . apps fl ast fm . services . youtube . Y outube Player Service Ċ import Ġeu . car aus . apps fl ast fm . services . youtube . model . youtube . YouTube Video Ċ import Ġeu . car aus . apps fl ast fm . ui . main . MainActivity Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . os . Build Ċ import Ġandroid . widget . Remote Views ĊĊ Ċ class ĠNotifications Util ( private Ġval Ġcontext : ĠContext Ġ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ ID Ġ= Ġ" eu . car aus . apps fl ast fm . Y OUT UBE _ PLAY _ SERVICE " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOT IFICATION _ ID Ġ= Ġ 6 9 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġbuilder Ġ: ĠNotification Compat . Builder ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġget Service Intent () Ġ: ĠIntent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠIntent ( Ġcontext , ĠY outube Player Service :: class . java ) ĊĊĠĠĠ Ġprivate Ġfun ĠgetActivity Intent () Ġ: ĠIntent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠIntent ( Ġcontext , ĠMainActivity :: class . java ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Pending Intent ( Ġintent Ġ: ĠIntent , Ġrequest Code Ġ: ĠInt Ġ= Ġ 0 Ġ) Ġ: ĠPending Intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠPending Intent . getService ( Ġcontext , Ġrequest Code , Ġintent , Ġ 0 ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Notification Manager () Ġ: ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġcontext . getSystem Service ( ĠContext . NOTIFICATION _ SERVICE Ġ) Ġas ĠNotification Manager ĊĊĠĠĠ Ġprivate Ġfun Ġget Notification Manager Compat () Ġ: ĠNotification Manager Compat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠNotification Manager Compat . from ( context ) ĊĊĊĠĠĠ Ġfun Ġbuild Notification ( Ġpending Action Ġ: ĠString , Ġvideo Ġ: ĠYouTube Video Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ LOW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( ĠCHAN NEL _ ID Ġ, ĠCHAN NEL _ ID , Ġimportance Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Notification Manager (). create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Pending Stop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġget Pending Intent ( Ġget Service Intent (). apply Ġ{ Ġthis . action Ġ= Ġpending Action Ġ} Ġ, Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġremote Views ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠRemote Views ( Ġcontext . packageName , ĠR . layout . player _ notification Ġ). apply { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextView Text ( ĠR . id . tv Album Song ĠĠ Ġ, Ġvideo . title Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextView Text ( ĠR . id . tv Album Artist Ġ, Ġ"-" Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextView Text ( ĠR . id . tv Elapsed ĠĠĠĠ Ġ, Ġformat Track Length ( Ġvideo . track Elapsed Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ImageView Resource ( ĠR . id . iv Album Image , ĠR . drawable . icon ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClick Pending Intent ( ĠR . id . pause Ġ, Ġservice Pending Stop Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠNotification Compat . Builder ( Ġcontext , ĠCHAN NEL _ ID Ġ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Small Icon ( R . drawable . ic _ play ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Style ( ĠNotification Compat . Decorated Custom View Style () Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Custom ContentView ( remote Views ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Custom Big ContentView ( remote Views ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Delete Intent ( Ġservice Pending Stop Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Cancel ( false ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder ?. set Channel Id ( ĠCHAN NEL _ ID Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Notification Manager Compat (). notify ( ĠNOT IFICATION _ ID Ġ, Ġit . build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel (){ ĊĠĠĠĠĠĠĠ Ġget Notification Manager Compat (). cancel ( NOTIFICATION _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Track Length ( Ġlength Ġ: ĠInt Ġ) Ġ: ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġlength Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġlength Ġ% Ġ 6 0 ĊĊĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% 0 2 d :% 0 2 d ", minutes , seconds ) ĊĠĠĠ Ġ} Ċ Ċ }