/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 5 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . example . cast rem oted is play Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Display Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġcom . google . android . gms . cast . Cast Presentation Ċ import Ġcom . google . android . gms . cast . Cast Remote Display Local Service Ċ import Ġandroid . widget . ProgressBar ĊĊ Ċ /** Ċ Ġ* ĠService Ġto Ġkeep Ġthe Ġremote Ġdisplay Ġrunning Ġeven Ġwhen Ġthe Ġapp Ġgoes Ġinto Ġthe Ġbackground Ċ Ġ*/ Ċ class ĠCast away Presentation Service Ġ: ĠCast Remote Display Local Service (), ĠPresentation Delegate Ġ{ ĊĊĠĠĠ Ġ// ĠFirst Ġscreen ĊĠĠĠ Ġprivate Ġvar Ġm Presentation : ĠCast Presentation ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm MediaPlayer : ĠMedia Player ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġprivate Ġvar Ġm Scheduler : ĠScheduler ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġm Scheduler Ġ= ĠScheduler ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAudio ĊĠĠĠĠĠĠĠ Ġm MediaPlayer Ġ= ĠMedia Player . create ( this , ĠR . raw . sound ) ĊĠĠĠĠĠĠĠ Ġm MediaPlayer ?. set Volume ( 0 . 1 . toFloat (), Ġ 0 . 1 . toFloat ()) ĊĠĠĠĠĠĠĠ Ġm MediaPlayer ?. is Loop ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Scheduler . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Presentation ( display : ĠDisplay ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Presentation ( display ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dismiss Presentation () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Presentation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss Presentation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Presentation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presentation ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presentation Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Presentation ( display : ĠDisplay ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Presentation () ĊĠĠĠĠĠĠĠ Ġm Presentation Ġ= ĠCast Away Presentation ( this , Ġdisplay ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presentation ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer ?. start () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠWindow Manager . Invalid Display Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Unable Ġto Ġshow Ġpresentation , Ġdisplay Ġwas Ġremoved .", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Presentation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Present ing ( media : ĠCast away Media ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( media ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWeb Media Ġ-> Ġshow In WebView ( media ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImage Media Ġ-> Ġshow In ImageView ( media ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow In WebView ( media : ĠWeb Media ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presentation ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast away View Ġ= ĠfindViewById < Cast away View >( R . id . cast away _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcast away View . show In WebView ( media . url . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow In ImageView ( media : ĠImage Media ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presentation ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast Away Presentation Ġ= Ġm Presentation Ġas ĠCast Away Presentation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcast Away Presentation . cast away View . show In ImageView ( media . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Present ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNothing Ġto Ġdo Ġfor Ġnow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Presentation Service " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġpresentation Ġto Ġshow Ġon Ġthe Ġfirst Ġscreen Ġ( the ĠTV ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġthis Ġdisplay Ġmay Ġhave Ġdifferent Ġmetrics Ġfrom Ġthe Ġdisplay Ġon ĊĠĠĠĠ Ġ* Ġwhich Ġthe Ġmain Ġactivity Ġis Ġshowing Ġso Ġwe Ġmust Ġbe Ġcareful Ġto Ġuse Ġthe ĊĠĠĠĠ Ġ* Ġpresentation 's Ġown Ġ[ Context ] Ġwhenever Ġwe Ġload Ġresources . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠCast Away Presentation ( context : ĠContext , Ġdisplay : ĠDisplay ) Ġ: ĠCast Presentation ( context , Ġdisplay ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" First Screen Presentation " ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġcast away View : ĠCast away View ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . first _ screen _ layout _ cast away ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcast away View Ġ= ĠfindViewById < Cast away View >( R . id . cast away _ view ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= ĠfindViewById < WebView >( R . id . cast away _ webview ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . settings . java Script Enabled Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . web View Client Ġ= ĠWeb ViewController () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠWeb ViewController Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimation Ġ= ĠAnimation Utils . load Animation ( base Context , Ġandroid . R . anim . slide _ in _ left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. start Animation ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. visibility Ġ= ĠView . VISIBLE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Resource ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Load Resource ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ