package Ġorg . dcl m . live . playback Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . Nullable Ċ import Ġandroidx . lean back . media . Playback Base Control Gl ue Ċ import Ġandroidx . lean back . media . Playback Transport Control Gl ue Ċ import Ġandroidx . lean back . widget . Action Ċ import Ġandroidx . lean back . widget . Array Object Adapter Ċ import Ġandroidx . lean back . widget . Playback Controls Row .* Ċ import Ġcom . google . android . ex op layer 2 . ext . lean back . Lean back Player Adapter ĊĊ Ċ class ĠVideo Player Gl ue ( context : ĠContext ?, Ġplayer Adapter : ĠLe an back Player Adapter ?, Ġ@ Nullable Ġprivate Ġval Ġm ActionListener : ĠOn Action Clicked Listener ?) Ġ: ĠPlay back Transport Control Gl ue < Lean back Player Adapter ? >( context , Ġplayer Adapter ) Ġ{ ĊĠĠĠ Ġ/** ĠList ens Ġfor Ġwhen Ġskip Ġto Ġnext Ġand Ġprevious Ġactions Ġhave Ġbeen Ġdis patched . Ġ Ġ*/ ĊĠĠĠ Ġinterface ĠOn Action Clicked Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠSkip Ġto Ġthe Ġprevious Ġitem Ġin Ġthe Ġqueue . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Previous () ĊĊĠĠĠĠĠĠĠ Ġ/** ĠSkip Ġto Ġthe Ġnext Ġitem Ġin Ġthe Ġqueue . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Next () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġm Repeat Action : ĠRepeat Action ĊĠĠĠ Ġprivate Ġval Ġm Thumb s Up Action : ĠThumb s Up Action ĊĠĠĠ Ġprivate Ġval Ġm Thumb s Down Action : ĠThumb s Down Action ĊĠĠĠ Ġprivate Ġval Ġm Skip Previous Action : ĠSkip Previous Action ĊĠĠĠ Ġprivate Ġval Ġm Skip Next Action : ĠSkip Next Action ĊĠĠĠ Ġprivate Ġval Ġm Fast Forward Action : ĠFast Forward Action ĊĠĠĠ Ġprivate Ġval Ġm Rew ind Action : ĠRew ind Action ĊĠĠĠ Ġoverride Ġfun ĠonCreate Primary Actions ( adapter : ĠArray Object Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOrder Ġmatters , Ġsuper . onCreate Primary Actions () Ġwill Ġcreate Ġthe Ġplay Ġ/ Ġpause Ġaction . ĊĠĠĠĠĠĠĠ Ġ// ĠWill Ġdisplay Ġas Ġfollows : ĊĠĠĠĠĠĠĠ Ġ// Ġplay / pause , Ġprevious , Ġre wind , Ġfast Ġforward , Ġnext ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġ> Ġ/ || ĠĠĠĠĠ Ġ|< ĠĠĠĠĠĠĠ Ġ<< ĠĠĠĠĠĠĠ Ġ>> ĠĠĠĠĠĠĠĠ Ġ> | ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Primary Actions ( adapter ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Skip Previous Action ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Rew ind Action ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Fast Forward Action ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Skip Next Action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Secondary Actions ( adapter : ĠArray Object Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Secondary Actions ( adapter ) ĊĠĠĠĠĠĠĠ Ġ/* adapter . add ( m Thumb s Down Action ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Thumb s Up Action ) ĊĠĠĠĠĠĠĠ Ġadapter . add ( m Repeat Action ) */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Clicked ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Dispatch Action ( action )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Action ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠSuper Ġclass Ġhandles Ġplay / pause Ġand Ġdeleg ates Ġto Ġabstract Ġmethods Ġnext ()/ previous (). ĊĠĠĠĠĠĠĠ Ġsuper . on Action Clicked ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠShould Ġdispatch Ġactions Ġthat Ġthe Ġsuper Ġclass Ġdoes Ġnot Ġsupply Ġcallbacks Ġfor . ĊĠĠĠ Ġprivate Ġfun Ġshould Dispatch Action ( action : ĠAction ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction Ġ=== Ġm Rew ind Action Ġ|| Ġaction Ġ=== Ġm Fast Forward Action Ġ|| Ġaction Ġ=== Ġm Thumb s Down Action Ġ|| Ġaction Ġ=== Ġm Thumb s Up Action Ġ|| Ġaction Ġ=== Ġm Repeat Action ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdispatch Action ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPrimary Ġactions Ġare Ġhandled Ġmanually . ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ=== Ġm Rew ind Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre wind () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( action Ġ=== Ġm Fast Forward Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfast Forward () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( action Ġ=== Ġm Repeat Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( action Ġis ĠMulti Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmulti Action Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġas ĠMulti Action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Action . next Index () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNotify Ġadapter Ġof Ġaction Ġchanges Ġto Ġhandle Ġsecondary Ġactions , Ġsuch Ġas , Ġthumb s Ġup / down ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġrepeat . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Action Changed ( multi Action , Ġcontrols Row . secondary Actions Adapter Ġas ĠArray Object Adapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Action Changed ( ĊĠĠĠĠĠĠĠ Ġaction : ĠMulti Action , Ġadapter : ĠArray Object Adapter ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġadapter . indexOf ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Array Item Range Changed ( index , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext () Ġ{ ĊĠĠĠĠĠĠĠ Ġm ActionListener ?. onNext () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprevious () Ġ{ ĊĠĠĠĠĠĠĠ Ġm ActionListener ?. on Previous () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSk ips Ġbackwards Ġ 1 0 Ġseconds . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġre wind () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Position Ġ= Ġcurrent Position Ġ- ĠT EN _ SECONDS ĊĠĠĠĠĠĠĠ Ġnew Position Ġ= Ġif Ġ( new Position Ġ< Ġ 0 ) Ġ 0 Ġelse Ġnew Position ĊĠĠĠĠĠĠĠ Ġplayer Adapter !!. seek To ( new Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSk ips Ġforward Ġ 1 0 Ġseconds . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġfast Forward () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ+ ĠT EN _ SECONDS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Position Ġ= Ġif Ġ( new Position Ġ> Ġduration ) Ġduration Ġelse Ġnew Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Adapter !!. seek To ( new Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġrepeat Ġmode Ġ*/ ĊĠĠĠ Ġfun Ġrepeat (){ ĊĠĠĠĠĠĠĠ Ġplayer Adapter ?. set Repeat Action ( Playback Base Control Gl ue . ACTION _ REPEAT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠT EN _ SECONDS : ĠLong Ġ= Ġjava . util . concurrent . TimeUnit . SECONDS . to Millis ( 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Skip Previous Action Ġ= ĠSkip Previous Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Skip Next Action Ġ= ĠSkip Next Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Fast Forward Action Ġ= ĠFast Forward Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Rew ind Action Ġ= ĠRew ind Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Thumb s Up Action Ġ= ĠThumb s Up Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Thumb s Up Action . index Ġ= ĠThumb s Up Action . INDEX _ OUT LINE ĊĠĠĠĠĠĠĠ Ġm Thumb s Down Action Ġ= ĠThumb s Down Action ( context ) ĊĠĠĠĠĠĠĠ Ġm Thumb s Down Action . index Ġ= ĠThumb s Down Action . INDEX _ OUT LINE ĊĠĠĠĠĠĠĠ Ġm Repeat Action Ġ= ĠRepeat Action ( context ) ĊĠĠĠ Ġ} Ċ }