package Ġxyz . lu an . aud iop layers Ċ Ċ import Ġandroid . os . Handler Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ internal Ġclass ĠUpdate Callback Ġconstructor ( ĊĠĠĠ Ġmedia Players : ĠMutable Map < String , ĠPlayer >, ĊĠĠĠ Ġchannel : ĠMethod Channel , ĊĠĠĠ Ġhandler : ĠHandler , ĊĠĠĠ Ġaud iop layers Plugin : ĠAud iop layers Plugin Ċ ) Ġ: ĠRunnable Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmedia Players : ĠWeak Reference < Mutable Map < String , ĠPlayer >> Ġ= ĠWeak Reference < Mutable Map < String , ĠPlayer >>( media Players ) ĊĠĠĠ Ġprivate Ġval Ġchannel : ĠWeak Reference < Method Channel > Ġ= ĠWeak Reference ( channel ) ĊĠĠĠ Ġprivate Ġval Ġhandler : ĠWeak Reference < Handler > Ġ= ĠWeak Reference ( handler ) ĊĠĠĠ Ġprivate Ġval Ġaud iop layers Plugin : ĠWeak Reference < Aud iop layers Plugin > Ġ= ĠWeak Reference ( aud iop layers Plugin ) ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmedia Players : ĠMutable Map < String , ĠPlayer >? Ġ= Ġmedia Players . get () ĊĠĠĠĠĠĠĠ Ġval Ġchannel : ĠMethod Channel ? Ġ= Ġchannel . get () ĊĠĠĠĠĠĠĠ Ġval Ġhandler : ĠHandler ? Ġ= Ġhandler . get () ĊĠĠĠĠĠĠĠ Ġval Ġaud iop layers Plugin : ĠAud iop layers Plugin ? Ġ= Ġaud iop layers Plugin . get () ĊĠĠĠĠĠĠĠ Ġif Ġ(( media Players Ġ== Ġnull ) Ġ|| Ġ( channel Ġ== Ġnull ) Ġ|| Ġ( handler Ġ== Ġnull ) Ġ|| Ġ( aud iop layers Plugin Ġ== Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaud iop layers Plugin ?. stop Position Updates () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġnone Playing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( player : ĠPlayer Ġin Ġmedia Players . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! player . is Act ually Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnone Playing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey : ĠString ? Ġ= Ġplayer . player Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration : ĠInt Ġ= Ġplayer . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime : ĠInt Ġ= Ġplayer . current Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" audio . on Duration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAud iop layers Plugin . build Arguments ( key , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" audio . on Current Position ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAud iop layers Plugin . build Arguments ( key , Ġtime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( aud iop layers Plugin . seek Finish ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" audio . on Seek Complete ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAud iop layers Plugin . build Arguments ( player . player Id , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaud iop layers Plugin . seek Finish Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupportedOperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( none Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaud iop layers Plugin . stop Position Updates () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( this , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }