Skip to content
Product Documentation

Mobile SDK Video Module: Enabling Chromecast for your Android app

The Arc Mobile SDK for Android supports Chromecast integration for your app.

Step 1: Create an ArcCastManager object

The Video Module provides Chromecast integration through the ArcCastManager class. This class must be instantiated.

class MyActivity: AppCompatActivity() {
…
private var arcCastManager: ArcCastManager? = null
override fun onCreate(savedInstanceState: Bundle) {
…
arcCastManager = ArcCastManager(this)
arcCastManager.setSessionManagerListener(this)
…
}
…
}

Step 2: Add the cast icon to the options menu

override fun onCreateOptionsMenu(menu: Menu) : boolean {
menuInflater.inflate(R.menu.player, menu)
arcCastManager.addMenuCastButton(menu, R.id.media_route_menu_item)
return true
}

This is the menu file:

<?xml version="1.0″ encoding="utf-8″?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/media_route_menu_item"
android:title="Cast On"
app:actionProviderClass="com.arc.arcvideo.cast.ArcMediaRouteActionProvider"
android:orderInCategory="101″
app:showAsAction="always" />
</menu>

Step 3: Send the ArcCastManager to the media player

In order to enable Chromecast in your player instance, the ArcCastManager object created in step 1 needs to be sent to the media player, either by using the setCastManager method or through the configs.

Using the method:

mediaPlayer.setCastManager(arcCastManager)

Via config:

var config = ArcXPVideoConfig.Builder()
…
.setCastManager(arcCastManager)
…
.build()

Step 4: Cast the video

Casting will be handled automatically by the SDK. The user will just need to touch the cast button and pick a device.

(Optional) Implement ArcCastSessionManagerListener

The activity can optionally listen for events coming back from the casting session. To do this, it must implement ArcCastSessionManagerListener.

class MyActivity: AppCompatActivity(), ArcCastSessionManagerListener {
fun onSessionEnded(error: Int) {}
fun onSessionResumed(wasSuspended: Boolean) {}
fun onSessionStarted(sessionId: String) {}
fun onSessionStarting() {}
fun onSessionStartFailed(error: Int) {}
fun onSessionEnding() {}
fun onSessionResuming(sessionId: String) {}
fun onSessionResumeFailed(error: Int) {}
fun onSessionSuspended(reason: Int) {}
}

Customizations

The image associated with the Chromecast session can be set in the ArcXPVideoConfig object. this will show as a background art in the cast player window, and show on dialog when you press the Chromecast button, and will show on the notification window.

var config = ArcXPVideoConfig.Builder()
…
.setArtworkUrl(URL to image)
…