package Ġcom . kafka . player . playback . extensions Ċ Ċ import Ġcom . kafka . data . extensions . debug Ċ import Ġcom . google . android . ex op layer 2 .* Ċ import Ġcom . google . android . ex op layer 2 . source . Track Group Array Ċ import Ġcom . google . android . ex op layer 2 . track selection . Track Selection Array Ċ Ċ class ĠPlayer Listener Builder Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġon Playback Parameters : Ġ(( Playback Parameters ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Seek : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Tracks Changed : Ġ(( Track Group Array , ĠTrack Selection Array ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠonError : Ġ(( Exo Playback Exception ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Loading Change : Ġ(( Boolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Shuffle Change : Ġ(( Boolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Position Dis continu ity : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Repeat Mode Change : Ġ(( Int ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Timeline Change : Ġ(( Timeline ?, ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Player State : Ġ(( Boolean , ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Media Item Changed : Ġ(( Media Item ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġon Playback Parameters ( callback : Ġ(( Playback Parameters ?) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Playback Parameters Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Seek ( callback : Ġ(() Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Seek Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Tracks Changed ( callback : Ġ( Track Group Array ?, ĠTrack Selection Array ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Tracks Changed Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonError ( callback : Ġ( Exo Playback Exception ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonError Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Loading Change ( callback : Ġ( Boolean ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Loading Change Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Shuffle Change ( callback : Ġ( Boolean ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Shuffle Change Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Position Dis continu ity ( callback : Ġ( Int ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Position Dis continu ity Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Repeat Mode Change ( callback : Ġ( Int ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Repeat Mode Change Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Timeline Change ( callback : Ġ( Timeline ?, ĠAny ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Timeline Change Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Player State ( callback : Ġ( Boolean , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Player State Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Media Item Changed ( callback : Ġ( Media Item ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Media Item Changed Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild (): ĠPlayer . EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠPlayer . EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Parameters Changed ( playback Parameters : ĠPlay back Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Playback Parameters ?. invoke ( playback Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Seek Processed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Ġ{ Ġ" Seek Ġis " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Seek ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tracks Changed ( track Groups : ĠTrack Group Array , Ġtrack Selections : ĠTrack Selection Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tracks Changed ?. invoke ( track Groups , Ġtrack Selections ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Player Error ( error : ĠEx o Playback Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ?. invoke ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Loading Changed ( isLoading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Loading Change ?. invoke ( isLoading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Position Dis continu ity ( reason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Position Dis continu ity ?. invoke ( reason ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Repeat Mode Changed ( repeat Mode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Repeat Mode Change ?. invoke ( repeat Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Shuffle Mode Enabled Changed ( shuffle Mode Enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Shuffle Change ?. invoke ( shuffle Mode Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Timeline Changed ( timeline : ĠTimeline , Ġreason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeline Change ?. invoke ( timeline , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Player StateChanged ( play When Ready : ĠBoolean , Ġplayback State : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Player State ?. invoke ( play When Ready , Ġplayback State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Media Item Transition ( media Item : ĠMedia Item ?, Ġreason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Media Item Transition ( media Item , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Media Item Changed ?. invoke ( media Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠPlayer . setup ( configure : ĠPlayer Listener Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠPlayer Listener Builder () ĊĠĠĠ Ġbuilder . configure () ĊĠĠĠ Ġthis . addListener ( builder . build ()) Ċ } Ċ