package Ġcom . xh hold . plugin . music _ player Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . media . Media Browser Compat Ċ import Ġandroid . support . v 4 . media . Media Metadata Compat Ċ import Ġandroid . support . v 4 . media . session . Media Session Compat Ċ import Ġandroidx . media . Media Browser Service Compat Ċ import Ġcom . xh hold . plugin . music _ player . manager . Media Manager Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** Ċ Ġ* Ġ éŁ³ ä¹Ĳ æľįåĬ¡ , åĮħåĲ« æī«æıı ä¸İ æĴŃæĶ¾ Ċ Ġ*/ Ċ class ĠMusic Service Ġ: ĠMedia Browser Service Compat (), ĠCor outine Scope Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġmedia Session : ĠMedia Session Compat ĊĠĠĠ Ġlateinit Ġvar Ġmusic Repository : ĠMusic Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Session Listener : ĠMedia Session Listener ĊĊĠĠĠ Ġvar Ġcurrent Metadata : ĠMedia Metadata Compat ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Context Ġ= ĠSuper visor Job () Ġ+ ĠDispatch ers . Main . immediate ĊĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context Ġget () Ġ= Ġcoroutine Scope Context ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Music Service " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠB ROW SER _ ROOT Ġ= Ġ" root " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ ĠMedia Manager . init ( application Context ) ĊĠĠĠĠĠĠĠ Ġmedia Session Listener Ġ= ĠMedia Session Listener ( this ) ĊĠĠĠĠĠĠĠ Ġmusic Repository Ġ= ĠMusic Repository ( Music Database . getInstance ( this )) ĊĠĠĠĠĠĠĠ Ġmedia Session Ġ= ĠMedia Session Compat ( this , ĠTAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flags ( Media Session Compat . FLAG _ HAND LES _ QUEUE _ COMMAND S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Session Token ( session Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Callback ( media Session Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmedia Session . controller . transport Controls . prepare () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Task Removed ( root Intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Self () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope Context . cancel () ĊĠĠĠĠĠĠĠ Ġmedia Session Listener . on Stop () ĊĠĠĠĠĠĠĠ Ġmedia Session . isActive Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmedia Session . release () ĊĠĠĠĠĠĠĠ Ġmusic Repository . close () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Get Root ( ĊĠĠĠĠĠĠĠ Ġclient PackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġclient Uid : ĠInt , ĊĠĠĠĠĠĠĠ Ġroot Hints : ĠBundle ? ĊĠĠĠ Ġ): ĠBrowser Root Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBrowser Root ( BROWSER _ ROOT , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Children ( ĊĠĠĠĠĠĠĠ ĠparentId : ĠString , ĊĠĠĠĠĠĠĠ Ġresult : ĠResult < Mutable List < Media Browser Compat . Media Item >> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( parentId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB ROW SER _ ROOT Ġ-> Ġresult . send Result ( music Repository . getRoot ( application Context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . detach () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . send Result ( music Repository . get Media Item ( parentId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }