package Ġid . ps w . v sh launcher . medi ap layer Ċ Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġid . ps w . v sh launcher . Control Render able Ċ import Ġid . ps w . v sh launcher . Current AppData Ċ import Ġid . ps w . v sh launcher . MediaPlayer State Ċ import Ġid . ps w . v sh launcher . R Ċ import Ġjava . io . File Ċ Ċ class ĠX MB Video Player Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" video . self " ĊĠĠĠ Ġlateinit Ġvar Ġvp Ġ: ĠV SH Video View ĊĠĠĠ Ġlateinit Ġvar Ġscal er Ġ: ĠVideo Scal able ViewGroup ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontrol Ġ: ĠV SH Video Control ĊĠĠĠ Ġprivate Ġvar Ġplayer State Ġ= ĠMedia Player State . Un initialized ĊĠĠĠ Ġvar Ġpath Ġ= Ġ"" ĊĠĠĠ Ġvar Ġselection Ġ= ĠPoint ( 0 , Ġ 0 ) ĊĠĠĠ Ġvar Ġselection Control Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 0 , Ġ 0 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ stop , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Stop () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint (- 1 , Ġ 0 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ pause , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Pause () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint (- 2 , Ġ 0 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ play , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Play () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint (- 3 , Ġ 0 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ fwd , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer F wd () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint (- 4 , Ġ 0 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ b wd , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer B wd () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 5 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ switch display , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġswitch Control Display () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 4 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ delete , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġdelete Video File () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 3 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ set thumbnail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Set Current As Thumbnail () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 2 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ sw it char , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Change AR () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 1 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ view setting , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Switch Video Setting Widget () Ġ}) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( 0 , Ġ- 1 ), ĠControl Render able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . vide op layer _ volume , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Ġ{ Ġplayer Switch Volume Widget () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ x mb vp ) ĊĊĠĠĠĠĠĠĠ Ġvp Ġ= ĠfindViewById ( R . id . vide op layer ) ĊĠĠĠĠĠĠĠ Ġcontrol Ġ= ĠfindViewById ( R . id . v sh con ) ĊĠĠĠĠĠĠĠ Ġscal er Ġ= ĠfindViewById ( R . id . scaler ) ĊĊĠĠĠĠĠĠĠ Ġmake No Title () ĊĠĠĠĠĠĠĠ Ġmake FullScreen () ĊĠĠĠĠĠĠĠ Ġattach Event Listeners () ĊĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġintent . data ?. path Ġ?: ĠCurrent AppData . selected Video Path ĊĠĠĠĠĠĠĠ Ġif ( File ( path ). exists ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp . set Video Path ( path ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit (){ ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . anim _ ps 3 _ zoom fade in , ĠR . anim . anim _ ps 3 _ zoom fade out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġexit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġmake No Title () ĊĠĠĠĠĠĠĠ Ġmake FullScreen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġmake No Title () ĊĠĠĠĠĠĠĠ Ġmake FullScreen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake No Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . attributes . layout In Display Cut out Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ SHORT _ ED GES ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake FullScreen () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 1 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . set Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmove Selection ( x : ĠInt , Ġy : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġnew Point Ġ= ĠPoint ( selection . x Ġ+ Ġx , Ġselection . y Ġ+ Ġy ) ĊĠĠĠĠĠĠĠ Ġif ( selection Control . containsKey ( new Point )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġnew Point ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Selection (){ ĊĠĠĠĠĠĠĠ Ġval Ġsel Ġ= Ġselection Control [ selection ] ĊĠĠĠĠĠĠĠ Ġif ( sel ?. enabled Ġ== Ġtrue ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Control [ selection ]?. run nable ?. run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( keyCode ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ DP AD _ LEFT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Selection (- 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ DP AD _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Selection ( 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ DP AD _ RIGHT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Selection ( 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ DP AD _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Selection ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ BUTTON _ A , ĠKeyEvent . KEYCODE _ ENTER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Selection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattach Event Listeners (){ ĊĠĠĠĠĠĠĠ Ġcontrol . activity Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġvp . setOn Prepared Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Media ĠPlayer Ġis Ġprepared ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer State Ġ= ĠMedia Player State . Prepared ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Play () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvp . setOn Completion Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Media ĠPlayer Ġcompleted ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer State Ġ= ĠMedia Player State . Completed ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvp . setOn Error Listener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Media ĠPlayer ĠError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer State Ġ= ĠMedia Player State . Error ; Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlast Pos Ġ= ĠPoint F ( 0 f , Ġ 0 f ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġretval = Ġfalse ĊĠĠĠĠĠĠĠ Ġif ( event Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( event . action Mask ed ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE , ĠMotion Event . ACTION _ HO VER _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Move Ġ= Ġevent . x Ġ- Ġlast Pos . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Move Ġ= Ġevent . y Ġ- Ġlast Pos . y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġretval Ġ|| Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch Control Display () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontrol . isVisible Ġ= Ġ! control . isVisible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Video File () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠImplement Ġvideo Ġdelete Ġdialog ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" TODO : ĠImplement Ġvideo Ġdelete Ġdialog ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġplayer Switch Video Setting Widget (){ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠImplement ĠSwitch ĠVideo ĠSetting ĠWidget ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" TODO : ĠSwitch ĠVideo ĠSetting ĠWidget ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Switch Volume Widget (){ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠImplement ĠSwitch ĠVolume ĠSettings ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" TODO : ĠSwitch ĠVolume ĠWidget ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Set Current As Thumbnail () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠImplement ĠSet Ġcurrent Ġtime Ġas ĠThumb nail ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" TODO : ĠImplement ĠSet Ġcurrent Ġtime Ġas ĠThumb nail ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġpause Location Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Pause (){ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Pause ...") ĊĠĠĠĠĠĠĠ Ġpause Location Ġ= Ġvp . current Position ĊĠĠĠĠĠĠĠ Ġvp . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Play Ġ(){ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Playing ...") ĊĠĠĠĠĠĠĠ Ġvp . seek To ( pause Location ) ĊĠĠĠĠĠĠĠ Ġvp . start () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġplayer Change AR (){ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Switch ĠAR ...") ĊĠĠĠĠĠĠĠ Ġscal er . switch Scaling () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġplayer Stop Ġ(){ ĠLog . d ( TAG , Ġ" Stop ..."); Ġvp . stop Playback () Ġ} ĊĠĠĠ Ġprivate Ġfun Ġplayer Seek Checked ( second : ĠFloat ){ ĊĠĠĠĠĠĠĠ Ġval Ġnew Time Ġ= Ġvp . current Position Ġ+ Ġ( second Ġ* Ġ 1 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġif ( new Time Ġ> Ġ 0 Ġ&& Ġnew Time Ġ< Ġvp . duration Ġ&& Ġplayer State Ġ== ĠMedia Player State . Prepared ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp . seek To ( new Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġplayer F wd Ġ Ġ(){ Ġvp . seek To ( vp . current Position Ġ+ Ġ 1 0 0 0 0 )} ĊĠĠĠ Ġprivate Ġfun Ġplayer B wd Ġ Ġ(){ Ġvp . seek To ( vp . current Position Ġ- Ġ 1 0 0 0 0 )} Ċ }