/** Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . hu awei . training . kotlin . activities Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . content . res . Resources . NotFoundException Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroidx . view pager . widget . ViewPager . On Page ChangeListener Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . hu awei . ag connect . cloud . database . Cloud DB Zone Object Ċ import Ġcom . hu awei . ag connect . cloud . database . Cloud DB Zone Query Ċ import Ġcom . hu awei . h ms . ads . Ad Listener Ċ import Ġcom . hu awei . h ms . ads . Ad Param Ċ import Ġcom . hu awei . h ms . ads . Inter stitial Ad Ċ import Ġcom . hu awei . h ms . vide okit . player . Wise Player Ċ import Ġcom . hu awei . h ms . vide okit . player . common . Player Constants .* Ċ import Ġcom . hu awei . training . R Ċ import Ġcom . hu awei . training . kotlin . adapters . Tabs Pager Adapter Ċ import Ġcom . hu awei . training . kotlin . database . Cloud Db Action Ċ import Ġcom . hu awei . training . kotlin . database . Cloud Db Helper Ċ import Ġcom . hu awei . training . kotlin . database . Cloud Db Ui Callback Listener Ċ import Ġcom . hu awei . training . kotlin . database . tables . Course Content Table Ċ import Ġcom . hu awei . training . kotlin . database . tables . Course Details Table Ċ import Ġcom . hu awei . training . kotlin . database . tables . Courses C odel ab Details Table Ċ import Ġcom . hu awei . training . kotlin . database . tables . Exam Table Ċ import Ġcom . hu awei . training . kotlin . listeners . On Play WindowListener Ċ import Ġcom . hu awei . training . kotlin . listeners . On Wise Player Listener Ċ import Ġcom . hu awei . training . kotlin . utils . App Utils Ċ import Ġcom . hu awei . training . kotlin . utils . video .* Ċ import Ġcom . hu awei . training . kotlin . utils . video . Play Control Util . is Surface View Ċ import Ġcom . hu awei . training . kotlin . utils . video . control . Play Control Ċ import Ġcom . hu awei . training . kotlin . utils . view . Play View Ċ import Ġjava . io . Serializable Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ since Ġ 2 0 2 0 Ċ Ġ* Ġ@ author ĠHu awei ĠDT SE ĠIn dia Ċ Ġ*/ Ċ class ĠPlay Activity Ġ: ĠBase Activity (), ĠOn Play WindowListener , ĠOn Wise Player Listener , ĠCloud Db Ui Callback Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġinter stitial Ad : ĠInter stitial Ad ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠPlayer Ġview ĊĠĠĠ Ġprivate Ġvar Ġplayer Layout : ĠFrame Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠPlay Ġview ĊĠĠĠ Ġprivate Ġvar Ġplay View : ĠPlay View ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠPlay Ġcontrol ĊĠĠĠ Ġprivate Ġvar Ġplay Control : ĠPlay Control ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠWhether Ġthe Ġuser Ġis Ġtouch Ġseek bar ĊĠĠĠ Ġprivate Ġvar Ġis User Tracking Touch Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠWhether Ġat Ġthe Ġfront Ġde sk ĊĠĠĠ Ġprivate Ġvar Ġis Resume Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠWhether Ġthe Ġsuspend Ġstate ĊĠĠĠ Ġprivate Ġvar Ġis Suspend Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠVertical Ġscreen Ġproperties ĊĠĠĠ Ġprivate Ġvar Ġsystem Ui Visibility Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĠWhether Ġto Ġsuspend Ġthe Ġbuffer ĊĠĠĠ Ġprivate Ġvar Ġstream Request Mode Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĠSm ooth / manual Ġswitch Ġbit rate ĊĠĠĠ Ġprivate Ġvar Ġis Auto Switch Bit rate Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠPlay Ġcomplete ĊĠĠĠ Ġprivate Ġvar Ġis Play Complete Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠPlay Ġthe ĠView Ġis Ġcreated ĊĠĠĠ Ġprivate Ġvar Ġhas Surface Created Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠPlay Ġstatus ĊĠĠĠ Ġprivate Ġvar Ġis Playing Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠTabs Ġpager Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtabs Pager Adapter : ĠTabs Pager Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠCo Ġdetails . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġco Details : ĠCourse Details Table ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠCo Ġcontent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġco Content : ĠCourse Content Table ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠCo Ġc odel ab Ġdoc . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġco C odel ab Doc : ĠCour ses C odel ab Details Table ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠExam . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexam : ĠExam Table ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠView Ġpager . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġview Pager : ĠView Pager ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠCourse Ġid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcourse Id Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġcloud Ġdb Ġhelper . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcloud Ġdb Ġhelper ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcloud Db Helper : ĠCloud Db Helper ?= null ĊĊĠĠĠ Ġ@ Suppress Lint (" Source Locked Orientation Activity ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// ĠKeep Ġthe Ġscreen Ġon ĊĠĠĠĠĠĠĠ Ġwindow . set Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ) ĊĠĠĠĠĠĠĠ Ġval Ġcourse Name Ġ= Ġintent . getString Extra ( Constants . CO URSE _ NAME ) ĊĠĠĠĠĠĠĠ Ġcourse Id Ġ= Ġintent . getString Extra ( Constants . CO URSE _ ID )?. toInt () !! ĊĠĠĠĠĠĠĠ Ġcourse Name ?. let Ġ{ Ġset Toolbar ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġcloud Db Helper = ĠCloud Db Helper . getInstance ( application Context ) ĊĠĠĠĠĠĠĠ Ġcloud Db Helper ?. add CallBack Listener ( this ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġload Inter stitial Ad () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġis Resume Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( has Surface Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Bookmark () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler !!. has Messages ( Constants . PLAY ING _ WH AT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġis Resume Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġplay View ?. on Pause () ĊĠĠĠĠĠĠĠ Ġplay Control ?. on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( update View Handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinit Ġthe Ġlayout ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay View Ġ= ĠPlay View ( this , Ġthis , Ġthis ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( play View !!. content View ) ĊĠĠĠĠĠĠĠ Ġplay Control Ġ= ĠPlay Control ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ// ĠSome Ġof Ġthe Ġproperties Ġof Ġpre serving Ġvertical Ġscreen ĊĠĠĠĠĠĠĠ Ġsystem Ui Visibility Ġ= Ġwindow . decor View . system Ui Visibility ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġcurrent Ġvertical Ġscreen ĊĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= ĠfindViewById ( R . id . view _ pager ) ĊĠĠĠĠĠĠĠ Ġval Ġshare Ġ= ĠfindViewById < Floating ActionButton >( R . id . share ) ĊĠĠĠĠĠĠĠ Ġplayer Layout Ġ= ĠfindViewById ( R . id . frame _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġtabs Ġ= ĠfindViewById < Tab Layout >( R . id . tabs ) ĊĠĠĠĠĠĠĠ Ġval Ġlinear _ dec Ġ= ĠfindViewById < LinearLayout >( R . id . linear _ dec ) ĊĠĠĠĠĠĠĠ Ġval Ġlinear _ tabs Ġ= ĠfindViewById < LinearLayout >( R . id . linear _ tabs ) ĊĠĠĠĠĠĠĠ Ġlinear _ dec . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġlinear _ tabs . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġview Pager ?. add On Page ChangeListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOn Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Play State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Layout ?. setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , Ġ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Play State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Layout ?. setVisibility ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtabs . setup With ViewPager ( view Pager ) ĊĠĠĠĠĠĠĠ Ġ// Ġshare Ġapp ĊĠĠĠĠĠĠĠ Ġshare . setOnClickListener Ġ{ Ġstart : ĠView ? Ġ-> ĠApp Utils . share Activity ( this @ Play Activity ) Ġ} ĊĠĠĠĠĠĠĠ Ġquery With Course Id () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrepare Ġplaying ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġready () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. setCurrent Play Data ( intent Extra ) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Buffer ing View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġthe Ġvideo Ġdata ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġvideo Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġintent Extra : ĠSerializable ? ĊĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ?. get Serializable Extra ( Constants . VIDEO _ PLAY _ DATA ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Created ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Surface Created Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Surface View ( play View ?. surface View ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Suspend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler ?. has Messages ( Constants . PLAY ING _ WH AT ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Changed ( holder : ĠSurface Holder , Ġformat : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġsurface Destroyed ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Surface Created Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġplay Control ?. suspend () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loading Update ( wise Player : ĠW ise Player , Ġpercent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( percent Ġ< Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. update Buffer ing View ( percent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. dismiss Buffer ing View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Playing ( wise Player : ĠW ise Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( wise Player : ĠW ise Player , Ġwhat : ĠInt , Ġextra : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġplay View ?. dismiss Buffer ing View () ĊĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message Delayed ( Constants . PLAY _ ERROR _ FIN ISH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . DELAY _ M ILL IS _ 3 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Play Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. save Play Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplay Control ?. stop () ĊĠĠĠĠĠĠĠ Ġplay Control ?. release () ĊĠĠĠĠĠĠĠ Ġ// ĠM ute Ġonly Ġon Ġthe Ġcurrent Ġvideo Ġeffect ĊĠĠĠĠĠĠĠ Ġ// Play Control Util . is Mute ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ( update View Handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar , Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{} ĊĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis User Tracking Touch Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġplay Control ?. update Cur Progress ( seek Bar . progress ) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Buffer ing View () ĊĠĠĠĠĠĠĠ Ġplay View ?. update Play Progress View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar . progress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. buffer Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. buffer ing Speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. current Bit rate ) ĊĠĠĠĠĠĠĠ Ġis User Tracking Touch Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message Delayed ( Constants . PLAY ING _ WH AT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . DELAY _ M ILL IS _ 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUpdate Ġthe Ġplayer Ġview ĊĠĠĠ Ġ@ Suppress Lint (" Handler Leak ") ĊĠĠĠ Ġprivate Ġvar Ġupdate View Handler : ĠHandler ? Ġ= Ġobject Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . handle Message ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAY ING _ WH AT Ġ-> Ġif Ġ(! is User Tracking Touch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. update Play Progress View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. currentTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. buffer Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. buffer ing Speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. current Bit rate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Empty Message Delayed ( Constants . PLAY ING _ WH AT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . DELAY _ M ILL IS _ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . UPDATE _ PLAY _ STATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. update Play Complete View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAY _ ERROR _ FIN ISH Ġ-> Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġthe Ġplay Ġmode ĊĠĠĠ Ġprivate Ġfun Ġset Play Mode ( play Mode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Play Mode ( play Mode , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġcycle Ġmode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Cycle Mode Ġthe Ġis Ġcycle Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// ĠSet Ġcycle Ġmode ĊĠĠĠ Ġfun Ġset Cycle Mode ( is Cycle Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. is Cycle Mode Ġ= Ġis Cycle Mode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSelect Ġthe Ġplay Ġspeed ĊĠĠĠ Ġprivate Ġfun Ġset Play Speed () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Text Array Ġ= Ġresources . getString Array ( R . array . play _ speed _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeed Value Ġ= ĠData Format Util . get Play Speed String ( play Control !!. play Speed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ PLAY _ SPEED , ĠArrays . asList (* show Text Array ), Ġspeed Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exp : ĠNotFound Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġthe Ġplay Ġspeed ĊĠĠĠ Ġprivate Ġfun Ġon Switch Play Speed ( speed Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Play Speed ( speed Value ) ĊĠĠĠĠĠĠĠ Ġplay View ?. set Speed ButtonText ( speed Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠClose Ġlogo ĊĠĠĠ Ġprivate Ġfun Ġclose Logo () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. close Logo () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWhether Ġto Ġstop Ġthe Ġdownloading ĊĠĠĠ Ġprivate Ġfun Ġon Switch Request Mode ( select Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( select Value Ġ== ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ keep _ download )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream Request Mode Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( select Value Ġ== ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ stop _ download )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream Request Mode Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Buffer ing Status ( stream Request Mode Ġ== Ġ 0 , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġthe Ġbit rate ĊĠĠĠ Ġprivate Ġfun Ġon Switch Bit rate ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Select Ġ== ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . automatic _ adapt ation )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Auto Switch Bit rate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. switch Bit rate Smooth ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. switch Bit rate Design ated ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Auto Switch Bit rate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. switch Bit rate Smooth ( item Select . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. switch Bit rate Design ated ( item Select . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠModify Ġthe Ġstate Ġof Ġplay ĊĠĠĠ Ġprivate Ġfun Ġchange Play State () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Play Data ( is Playing ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. set Play View () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. set Pause View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSelect Ġthe Ġway Ġto Ġswitch Ġbit rate ĊĠĠĠ Ġprivate Ġfun Ġswitch Bit rate Auto () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ bit rate _ auto )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ bit rate _ design ated )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( Constants . PLAYER _ SWITCH _ AUTO _ DE SIGN ATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , ĠConstants . DIALOG _ INDEX _ ONE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġthe Ġbandwidth Ġswitch ĊĠĠĠ Ġprivate Ġfun Ġswitch Bandwidth Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . close _ adaptive _ bandwidth )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . open _ adaptive _ bandwidth )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( Constants . PLAYER _ SWITCH _ BAND WIDTH _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , ĠConstants . DIALOG _ INDEX _ ONE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġthe Ġplay Ġmode ĊĠĠĠ Ġprivate Ġfun Ġswitch Play Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . play _ video )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . play _ audio )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( Constants . PLAYER _ SWITCH _ PLAY _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , Ġplay Control !!. play Mode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIf Ġset Ġup Ġa Ġvideo Ġloop ĊĠĠĠ Ġprivate Ġfun Ġswitch Play Loop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ loop _ play )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ not _ loop _ play )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ LOOP _ PLAY _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( play Control !!. is Cycle Mode ) ĠConstants . DIALOG _ INDEX _ ONE Ġelse ĠConstants . DIALOG _ INDEX _ TWO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSelect Ġwhether Ġthe Ġmute ĊĠĠĠ Ġprivate Ġfun Ġswitch Video Mute () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ mute )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( resources . getString ( R . string . video _ not _ mute )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ VIDEO _ M UTE _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Play Control Util . is Mute ) ĠConstants . DIALOG _ INDEX _ ONE Ġelse ĠConstants . DIALOG _ INDEX _ TWO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* // ĠShow Ġthe Ġvolume Ġdialog ĊĠĠĠ Ġprivate Ġfun Ġset Video Volume () Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Util . show Set Volume Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinput Text : ĠString ? Ġ-> Ġplay Control . set Volume ( StringUtil . valueOf ( input Text )) Ġ} ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġ// ĠSwitch ing Ġbit rate ĊĠĠĠ Ġprivate Ġfun Ġswitch Bit rate Menu ( is Auto : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbit rate List Ġ= Ġplay Control !!. bit rate List ĊĠĠĠĠĠĠĠ Ġbit rate List . add ( StringUtil . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . automatic _ adapt ation )) ĊĠĠĠĠĠĠĠ Ġis Auto Switch Bit rate Ġ= Ġis Auto ĊĠĠĠĠĠĠĠ Ġval Ġselected Value Index : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Bit rate Ġ= Ġplay Control !!. current Bit rate ĊĠĠĠĠĠĠĠ Ġselected Value Index Ġ= Ġif Ġ( current Bit rate Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. current Bit rate Index ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( Constants . PLAYER _ SWITCH _ BIT RATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit rate List , Ġselected Value Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWhether Ġto Ġstop Ġthe Ġdownload Ġdialog ĊĠĠĠ Ġprivate Ġfun Ġstop Request Stream () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Text List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( StringUtil . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ keep _ download )) ĊĠĠĠĠĠĠĠ Ġshow Text List . add ( StringUtil . getString From Res Id ( this @ Play Activity , ĠR . string . video _ stop _ download )) ĊĠĠĠĠĠĠĠ Ġplay View ?. show Setting Dialog ( Constants . PLAYER _ SWITCH _ STOP _ REQUEST _ STREAM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text List , Ġstream Request Mode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . play _ btn Ġ-> Ġchange Play State () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fullscreen _ btn Ġ-> Ġset FullScreen () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . play _ speed _ btn Ġ-> Ġset Play Speed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġup Ġthe Ġfull Ġscreen ĊĠĠĠ Ġ@ Suppress Lint (" Source Locked Orientation Activity ") ĊĠĠĠ Ġprivate Ġfun Ġset FullScreen () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Device Util . is Por trait ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View !!. set FullScreen View ( play Control !!. current Play Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġfull Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ LAYOUT _ NO _ LIMIT S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. set Surface Change () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġthe Ġback Ġbutton Ġto Ġreturn Ġto Ġthe Ġlandscape Ġconditions Ġvertical Ġscreen ĊĠĠĠĠĠĠĠ Ġif Ġ(! Device Util . is Por trait ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Press () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠClick Ġthe Ġback Ġbutton Ġin Ġthe Ġupper Ġleft Ġcorner ĊĠĠĠ Ġ@ Suppress Lint (" Source Locked Orientation Activity ") ĊĠĠĠ Ġprivate Ġfun Ġback Press () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Device Util . is Por trait ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. set Por trait View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġthe Ġfull Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ LAYOUT _ NO _ LIMIT S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġsystem Ui Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Surface Change () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Available ( surface : ĠSurface Texture , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Surface Created Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Texture View ( play View !!. texture View ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Suspend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler ?. has Messages ( Constants . PLAY ING _ WH AT ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Size Changed ( surface : ĠSurface Texture , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Destroyed ( surface : ĠSurface Texture ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Surface Created Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġplay Control ?. suspend () ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Texture Updated ( surface : ĠSurface Texture ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( pos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Play Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. save Play Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( update View Handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplay Entity Ġ= Ġplay Control !!. get Play From Position ( pos ) ĊĠĠĠĠĠĠĠ Ġif Ġ( play Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( play Control !!. init Play Fail ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. setCurrent Play Data ( play Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Player () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmsg Settings ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ bit rate _ title ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Bit rate Auto () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Util . getString From Res Id ( this @ Play Activity , ĠR . string . video _ stop _ download ing ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Request Stream () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ set _ play _ speed ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Play Speed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ set _ bandwidth _ mode ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Bandwidth Mode () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . close _ logo ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Logo () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . play _ mode ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Play Mode () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ set _ loop _ play ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Play Loop () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ mute _ setting ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Video Mute () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Video Volume () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Switch Auto Design ated ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ bit rate _ auto ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Bit rate Menu ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Bit rate Menu ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Sw t ch Bandwidth ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . open _ adaptive _ bandwidth ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Bandwidth Switch Mode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBand width Switch Mode . AUTO _ SWITCH _ MODE , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Bandwidth Switch Mode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBand width Switch Mode . MAN UAL _ SWITCH _ MODE , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Play ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( this @ Play Activity , ĠR . string . play _ audio ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Play Mode ( Play Mode . PLAY _ MODE _ AUDIO _ ONLY ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Play Mode ( Play Mode . PLAY _ MODE _ NORMAL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Loop Play ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Play Activity , ĠR . string . video _ loop _ play ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cycle Mode ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cycle Mode ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Video ( item Select : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Select , ĠString Util . getString From Res Id ( this @ Play Activity , ĠR . string . video _ mute ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Mute ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Mute ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Setting Item Click ( item Select : ĠString ?, Ġsetting Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( setting Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ SETTING Ġ-> Ġitem Select ?. let Ġ{ Ġmsg Settings ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ AUTO _ DE SIGN ATED Ġ-> Ġitem Select ?. let Ġ{ Ġplayer Switch Auto Design ated ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ STOP _ REQUEST _ STREAM Ġ-> Ġitem Select ?. let Ġ{ Ġon Switch Request Mode ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ PLAY _ SPEED Ġ-> Ġitem Select ?. let Ġ{ Ġon Switch Play Speed ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ BAND WIDTH _ MODE Ġ-> Ġitem Select ?. let Ġ{ Ġplayer Sw t ch Bandwidth ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ PLAY _ MODE Ġ-> Ġitem Select ?. let Ġ{ Ġplayer Play ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ LOOP _ PLAY _ MODE Ġ-> Ġitem Select ?. let Ġ{ Ġplayer Loop Play ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ VIDEO _ M UTE _ MODE Ġ-> Ġitem Select ?. let Ġ{ Ġplayer Video ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PLAYER _ SWITCH _ BIT RATE Ġ-> Ġitem Select ?. let Ġ{ Ġon Switch Bit rate ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReset Ġplayer Ġplay Ġparameters ĊĠĠĠ Ġprivate Ġfun Ġrestart Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. set Mute ( false ) ĊĠĠĠĠĠĠĠ Ġplay Control ?. ready () ĊĠĠĠĠĠĠĠ Ġif Ġ( has Surface Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Surface View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Surface View ( play View ?. surface View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. set Texture View ( play View ?. texture View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler ?. has Messages ( Constants . PLAY ING _ WH AT ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Event ( wise Player : ĠW ise Player , Ġwhat : ĠInt , Ġextra : ĠInt , Ġo : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Play End ( wise Player : ĠW ise Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Control ?. clear Play Progress () ĊĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Play Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġupdate View Handler ?. send Empty Message Delayed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . UPDATE _ PLAY _ STATE , ĠConstants . DELAY _ M ILL IS _ 1 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Ready ( wise Player : ĠW ise Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwise Player ?. start () ĊĠĠĠĠĠĠĠ Ġis Playing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. update Play View ( wise Player ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Resume ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. set Pause View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay View ?. set ContentView ( wise Player , Ġplay Control ?. current Play Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resolution Updated ( wise Player : ĠW ise Player , Ġw : ĠInt , Ġh : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay View ?. set ContentView ( wise Player , Ġplay Control ?. current Play Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Seek End ( wise Player : ĠW ise Player ) Ġ{} ĊĠĠĠ Ġprivate Ġval Ġad Listener : ĠAd Listener Ġ= Ġobject Ġ: ĠAd Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Loaded () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ad Loaded () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Inter stitial () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed ( errorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( play Control !!. init Play Fail ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" Player Ġinitial isation Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. ready () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Surface Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Surface View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. set Surface View ( play View ?. surface View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. set Texture View ( play View ?. texture View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler !!. has Messages ( Constants . PLAY ING _ WH AT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler !!. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Closed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ad Closed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( play Control !!. init Play Fail ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" Player Ġinitial isation Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. ready () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Surface Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Surface View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. set Surface View ( play View ?. surface View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. set Texture View ( play View ?. texture View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Suspend Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control !!. play Resume ( Resume Type . KEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! update View Handler !!. has Messages ( Constants . PLAY ING _ WH AT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View Handler !!. send Empty Message ( Constants . PLAY ING _ WH AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ad Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Opened () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ad Opened () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġload ĠInter stitial ĠAdd ĊĠĠĠ Ġprivate Ġfun Ġload Inter stitial Ad () Ġ{ ĊĠĠĠĠĠĠĠ Ġinter stitial Ad Ġ= ĠInter stitial Ad ( this ) ĊĠĠĠĠĠĠĠ Ġinter stitial Ad ?. ad Id Ġ= Ġresources . getString ( R . string . video _ ad _ id ) ĊĠĠĠĠĠĠĠ Ġinter stitial Ad ?. ad Listener Ġ= Ġad Listener ĊĠĠĠĠĠĠĠ Ġval Ġad Param Ġ= ĠAd Param . Builder (). build () ĊĠĠĠĠĠĠĠ Ġinter stitial Ad ?. load Ad ( ad Param ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠDisplay Ġan Ġinter stitial Ġad . ĊĠĠĠ Ġprivate Ġfun Ġshow Inter stitial () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( inter stitial Ad Ġ!= Ġnull Ġ&& Ġinter stitial Ad !!. is Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinter stitial Ad ?. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess Db Data ( cloud Db Action : ĠCloud Db Action ?, Ġdata List : ĠList < Cloud DB Zone Object ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( cloud Db Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Db Action . GET _ ALL _ CO UR SES Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġco Details Ġ= Ġdata List ?. get ( 0 ) Ġas ĠCourse Details Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Course Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Control ?. video Url Ġ= Ġco Details ?. course Video Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġready () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Db Action . GET _ EX AM _ DETAILS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexam Ġ= Ġdata List ?. get ( 0 ) Ġas ĠExam Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Pager Adapter Ġ= ĠTabs Pager Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġco Content !! , Ġco C odel ab Doc !! , Ġexam !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager ?. adapter Ġ= Ġtabs Pager Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Db Action . GET _ CODE _ LAB Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġco C odel ab Doc Ġ= Ġdata List ?. get ( 0 ) Ġas ĠCour ses C odel ab Details Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Course Exam () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Db Action . GET _ CO URSE _ CONTENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġco Content Ġ= Ġdata List ?. get ( 0 ) Ġas ĠCourse Content Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Code Lab Doc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Db Action . GET _ CO URSE _ DOC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess Db Query Message ( cloud Db Action : ĠCloud Db Action ?, Ġmessage : ĠString ?) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġon Failure Db Query Message ( cloud Db Action : ĠCloud Db Action ?, Ġmessage : ĠString ?) Ġ{} ĊĠĠĠ Ġprivate Ġfun Ġquery With Course Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcloud DB Zone Query : ĠCloud DB Zone Query < *> Ġ= ĠCloud DB Zone Query . where ( Course Details Table :: class . java ) ĊĠĠĠĠĠĠĠ Ġcloud DB Zone Query . equalTo (" course Id ", Ġcourse Id ) ĊĠĠĠĠĠĠĠ Ġcloud Db Helper ?. get Cloud Db All Que y Calls ()?. query Course Details Table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcloud DB Zone Query Ġas ĠCloud DB Zone Query < Course Details Table > ?, ĠCloud Db Action . GET _ ALL _ CO UR SES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Code Lab Doc () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcloud DB Zone Query : ĠCloud DB Zone Query < *> Ġ= ĠCloud DB Zone Query . where ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCour ses C odel ab Details Table :: class . java ) ĊĠĠĠĠĠĠĠ Ġcloud DB Zone Query . equalTo (" course Id ", Ġcourse Id ) ĊĠĠĠĠĠĠĠ Ġcloud Db Helper ?. get Cloud Db All Que y Calls ()?. query C odel ab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcloud DB Zone Query Ġas ĠCloud DB Zone Query < Courses C odel ab Details Table > ?, ĠCloud Db Action . GET _ CODE _ LAB ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Course Content () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcloud DB Zone Query : ĠCloud DB Zone Query < *> Ġ= ĠCloud DB Zone Query . where ( Course Content Table :: class . java ) ĊĠĠĠĠĠĠĠ Ġcloud DB Zone Query . equalTo (" course Id ", Ġ( "" Ġ+ Ġcourse Id ). to Long ()) ĊĠĠĠĠĠĠĠ Ġcloud Db Helper ?. get Cloud Db All Que y Calls ()?. query Course Content Table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcloud DB Zone Query Ġas ĠCloud DB Zone Query < Course Content Table > ?, ĠCloud Db Action . GET _ CO URSE _ CONTENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Course Exam () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcloud DB Zone Query : ĠCloud DB Zone Query < *> Ġ= ĠCloud DB Zone Query . where ( Exam Table :: class . java ) ĊĠĠĠĠĠĠĠ Ġcloud DB Zone Query . equalTo (" exam Id ", Ġcourse Id ) ĊĠĠĠĠĠĠĠ Ġcloud Db Helper ?. get Cloud Db All Que y Calls ()?. query Exam Table Details ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcloud DB Zone Query Ġas ĠCloud DB Zone Query < Exam Table > ?, ĠCloud Db Action . GET _ EX AM _ DETAILS ) ĊĠĠĠ Ġ} Ċ }