package Ġpl . gun ock . chrome cast example Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . MenuItem Compat Ċ import Ġcom . google . android . gms . cast . framework . Cast Context Ċ import Ġcom . google . android . gms . cast . framework . Cast Session Ċ import Ġorg . json . JSONObject Ċ import Ġpl . gun ock . chrome cast example . cast . Custom Media Route Action Provider Ċ import Ġpl . gun ock . chrome cast example . enums . Move Action Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Title Namespace : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Move Namespace : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Cast Context : ĠCast Context ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm TextInput : ĠEditText ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Send Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Left Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Right Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Up Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Down Button : ĠButton ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar _ main )) ĊĊĠĠĠĠĠĠĠ Ġm Title Namespace Ġ= ĠgetString ( R . string . chrome cast _ title _ namespace ) ĊĠĠĠĠĠĠĠ Ġm Move Namespace Ġ= ĠgetString ( R . string . chrome cast _ move _ namespace ) ĊĠĠĠĠĠĠĠ Ġm Cast Context Ġ= ĠCast Context . get Shared Instance ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġm TextInput Ġ= ĠfindViewById ( R . id . ed _ text ) ĊĊĠĠĠĠĠĠĠ Ġm Send Button Ġ= ĠfindViewById ( R . id . btn _ send ) ĊĠĠĠĠĠĠĠ Ġm Left Button Ġ= ĠfindViewById ( R . id . btn _ left ) ĊĠĠĠĠĠĠĠ Ġm Right Button Ġ= ĠfindViewById ( R . id . btn _ right ) ĊĠĠĠĠĠĠĠ Ġm Up Button Ġ= ĠfindViewById ( R . id . btn _ up ) ĊĠĠĠĠĠĠĠ Ġm Down Button Ġ= ĠfindViewById ( R . id . btn _ down ) ĊĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcast Action Provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem Compat . getAction Provider ( menu . find Item ( R . id . menu _ cast )) Ġas ĠCustom Media Route Action Provider ĊĊĠĠĠĠĠĠĠ Ġcast Action Provider . route Selector Ġ= Ġm Cast Context . merged Selector ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Send Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCast Session Ġ= Ġm Cast Context . session Manager . current Cast Session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext : ĠString Ġ= Ġm TextInput . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Json : ĠJSONObject Ġ= ĠJSONObject (). apply Ġ{ Ġput (" text ", Ġtext ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . sendMessage ( m Title Namespace , Ġmessage Json . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Left Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCast Session Ġ= Ġm Cast Context . session Manager . current Cast Session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Move Action ( session , ĠMove Action . LEFT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Right Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCast Session Ġ= Ġm Cast Context . session Manager . current Cast Session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Move Action ( session , ĠMove Action . RIGHT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Up Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCast Session Ġ= Ġm Cast Context . session Manager . current Cast Session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Move Action ( session , ĠMove Action . UP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Down Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCast Session Ġ= Ġm Cast Context . session Manager . current Cast Session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Move Action ( session , ĠMove Action . DOWN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Move Action ( session : ĠCast Session , Ġmove Action : ĠMove Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Json : ĠJSONObject Ġ= ĠJSONObject (). apply Ġ{ Ġput (" action ", Ġmove Action . toString ()) Ġ} ĊĠĠĠĠĠĠĠ Ġsession . sendMessage ( m Move Namespace , Ġmessage Json . toString ()) ĊĠĠĠ Ġ} Ċ Ċ }