package Ġcom . s ah ib . av oc ado . ui . activities Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . edit Ċ import Ġcom . google . android . ex op layer 2 . C Ċ import Ġcom . google . android . ex op layer 2 . Format Ċ import Ġcom . google . android . ex op layer 2 . Player . EventListener Ċ import Ġcom . google . android . ex op layer 2 . Simple Exo Player Ċ import Ġcom . google . android . ex op layer 2 . extractor . Default Extract ors Factory Ċ import Ġcom . google . android . ex op layer 2 . source . Extractor Media Source Ċ import Ġcom . google . android . ex op layer 2 . source . Media Source Ċ import Ġcom . google . android . ex op layer 2 . source . Mer ging Media Source Ċ import Ġcom . google . android . ex op layer 2 . source . Single Sample Media Source Ċ import Ġcom . google . android . ex op layer 2 . ui . AspectRatio Frame Layout Ċ import Ġcom . google . android . ex op layer 2 . ui . Player View Ċ import Ġcom . google . android . ex op layer 2 . upstream . Default Bandwidth Meter Ċ import Ġcom . google . android . ex op layer 2 . upstream . Default DataSource Factory Ċ import Ġcom . google . android . ex op layer 2 . util . Mime Types Ċ import Ġcom . google . android . ex op layer 2 . util . Util Ċ import Ġcom . s ah ib . av oc ado . Constants Ċ import Ġcom . s ah ib . av oc ado . R Ċ import Ġcom . s ah ib . av oc ado . app . My Application Ċ import Ġcom . s ah ib . av oc ado . model . Video Content Ċ import Ġcom . s ah ib . av oc ado . utils . sw ip per . Sw ip per Gesture Detection Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . io . File Ċ Ċ class ĠVideo Player Activity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Gesture Detection : ĠSw ip per Gesture Detection ĊĠĠĠ Ġprivate Ġvar Ġplay When Ready Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġplayback Position : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Brightness : ĠFloat Ġ= Ġ 0 . 1 F ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġplayer View : ĠPlayer View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcustom Controller : ĠLinearLayout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġex o _ video _ fit : ĠImage Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġex o _ video _ fill : ĠImage Button ĊĠĠĠ Ġprivate Ġvar Ġsimple Exo Player : ĠSimple Exo Player ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġposition : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlist : ĠArrayList < Video Content >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Video : ĠVideo Content ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġplayback Progress Observable : ĠObservable < Long >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġplayback Disposable : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Scale : ĠInt Ġ= ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ FIT ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ video _ player ) ĊĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Exo Player () ĊĠĠĠĠĠĠĠ Ġhandle Video AspectRatio () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer View Ġ= ĠfindViewById ( R . id . video View ) ĊĠĠĠĠĠĠĠ Ġcustom Controller Ġ= ĠfindViewById ( R . id . layout _ custom _ controller ) ĊĠĠĠĠĠĠĠ Ġex o _ video _ fit Ġ= ĠfindViewById ( R . id . exo _ video _ fit ) ĊĠĠĠĠĠĠĠ Ġex o _ video _ fill Ġ= ĠfindViewById ( R . id . exo _ video _ fill ) ĊĠĠĠĠĠĠĠ Ġcurrent Brightness Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . general . name ). get Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . Shared Pref Item Names . brightness . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . attributes . screen Brightness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġintent . get Parcelable ArrayList Extra ( Constants . Intent Items . video List . name ) ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġintent . getInt Extra ( Constants . Intent Items . position . name , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcurrent Video Ġ= Ġlist ?. get ( position !! ) ĊĊĠĠĠĠĠĠĠ Ġplayback Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . video Status . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getLong ( current Video ?. asset File String Uri , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġobserver Progress () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserver Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Rx Kotlin Ġto Ġobserve Ġprogress Ġupdate ĊĠĠĠĠĠĠĠ Ġplayback Disposable Ġ= Ġplayback Progress Observable ?. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . observe On ( Android Schedulers . main Thread ()) ?. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( simple Exo Player !!. current Window Index Ġ== Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayback Position Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Exo Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( simple Exo Player Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player Ġ= ĠSimple Exo Player . Builder ( this ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer View . player Ġ= Ġsimple Exo Player ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Sources List : ĠArrayList < Media Source > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( video Content : ĠVideo Content Ġin Ġlist !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Source Ġ= ĠExtract or Media Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( video Content . asset File String Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault DataSource Factory ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Extract ors Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubtitle Uri Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Content . path !!. substring ( 0 , Ġvideo Content . path !!. lastIndexOf (". ")) Ġ+ Ġ". s rt " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( File ( subtitle Uri ). exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmerged Source : ĠMer ging Media Source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubtitle Format : ĠFormat Ġ= ĠFormat . createText Sample Format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMime Types . APPLICATION _ SUB R IP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . NO _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" en " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSource Factory Ġ= ĠDefault DataSource Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . getUser Agent ( this , Ġthis . packageName ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Bandwidth Meter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubtitle Source Ġ= ĠSingle Sample Media Source . Factory ( dataSource Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Media Source ( Uri . parse ( subtitle Uri ), Ġsubtitle Format , ĠC . TIME _ UN SET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerged Source Ġ= ĠMer ging Media Source ( media Source , Ġsubtitle Source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Sources List . add ( merged Source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Sources List . add ( media Source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player ?. set Media Sources ( media Sources List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player ?. play When Ready Ġ= Ġplay When Ready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player ?. seek To ( position !! , Ġplayback Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player ?. video Scaling Mode Ġ= ĠC . VIDEO _ SCAL ING _ MODE _ SCALE _ TO _ FIT _ WITH _ C RO PP ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player ?. prepare () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Swipe Gesture Detection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Video Dis continu ity Listener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Video Dis continu ity Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// To Ġchange Ġcurrent Ġseek Ġposition Ġin Ġcase Ġthe Ġtrack Ġis Ġchanged ĊĠĠĠĠĠĠĠ Ġsimple Exo Player !!. addListener ( object Ġ: ĠEvent Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Position Dis continu ity ( reason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatest Window Index : ĠInt Ġ= Ġsimple Exo Player !!. current Window Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( latest Window Index Ġ!= Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Save Ġthe Ġold Ġtracks Ġplayback Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . video Status . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( current Video ?. asset File String Uri , Ġplayback Position ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Load Ġthe Ġnew Ġtracks Ġplayback Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġlatest Window Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Video Ġ= Ġlist ?. get ( position !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Gesture Detection . set New Video Duration ( current Video !!. video Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayback Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . video Status . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getLong ( current Video ?. asset File String Uri , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player !!. seek To ( playback Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Video AspectRatio () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Scale Ġ= ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . general . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . Shared Pref Item Names . scale . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ FIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġplayer View . resize Mode Ġ= Ġcurrent Scale ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Scale Ġ== ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ FIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fill . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fill . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġex o _ video _ fit . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġex o _ video _ fill . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Exo Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġhandle Configuration () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ< Ġ 2 4 Ġ|| Ġsimple Exo Player Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Exo Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ< Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrelease Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( simple Exo Player Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player !!. stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay When Ready Ġ= Ġsimple Exo Player !!. play When Ready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback Position Ġ= Ġsimple Exo Player !!. current Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player !!. release () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . video Status . name ). edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( current Video ?. asset File String Uri , Ġplayback Position ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Exo Player Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġhandle Configuration () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Swipe Gesture Detection () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Gesture Detection Ġ= ĠSw ip per Gesture Detection ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Brightness , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Video !!. video Duration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer View , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ip per Gesture Detection . On Touch Listener Ġ{ Ġv , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġevent !!. action Mask ed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġshow Ġcast Ġbutton Ġfor Ġsome Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġplayer View . setOn Touch Listener ( swipe Gesture Detection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Brightness Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . general . name ). get Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . Shared Pref Item Names . brightness . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . attributes . screen Brightness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Orientation Ġ= Ġresources . configuration . orientation ĊĠĠĠĠĠĠĠ Ġif Ġ( current Orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide System Ui FullScreen () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide System Ui () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Swipe Gesture Detection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" In lined Api ") ĊĠĠĠ Ġprivate Ġfun Ġhide System Ui FullScreen () Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer View !!. system Ui Visibility Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" In lined Api ") ĊĠĠĠ Ġprivate Ġfun Ġhide System Ui () Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer View !!. system Ui Visibility Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv !!. id Ġ== ĠR . id . exo _ video _ fit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Scale Ġ= ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ FIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fill . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . id Ġ== ĠR . id . exo _ video _ fill Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Scale Ġ= ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ FILL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fill . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o _ video _ fit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplayer View . resize Mode Ġ= Ġcurrent Scale ĊĠĠĠĠĠĠĠ ĠMy Application . pref Helper . custom Prefs ( Constants . Shared Pref Names . general . name ). edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( Constants . Shared Pref Item Names . scale . name , Ġcurrent Scale ). commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }