Integrate Chromecast Streaming in Your Mobile App

When a user taps the Cast button, content should instantly appear on the big screen. But implementing that button is far from trivial: integrating the Google Cast SDK, managing session state, handling connection loss, and controlling pause and seek. Devices must be on the same network, and the app m

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Integrate Chromecast Streaming in Your Mobile App
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

When a user taps the Cast button, content should instantly appear on the big screen. But implementing that button is far from trivial: integrating the Google Cast SDK, managing session state, handling connection loss, and controlling pause and seek. Devices must be on the same network, and the app must pass App Store Review Guidelines (Section 4.2). We handle this for you. Our team has 5+ years in mobile development and 15+ projects with Chromecast streaming. We use proven patterns and guarantee stable performance on Android and iOS. Our ready components reduce time-to-market by 30%, and using the Default Media Receiver can cut initial budget costs by up to 40%.

How to Implement Chromecast Streaming in 2–3 Days?

The fastest path is using the Default Media Receiver: the phone (Sender) sends a content URL, and the Receiver streams it directly—no custom web app needed. Playback control goes through the Google Cast SDK. Basic integration takes 2–3 days. For custom requirements (UI, DRM, analytics), we develop a custom Receiver, adding another 2–3 days. Development costs are up to 50% lower compared to doing it yourself.

Integrating the Google Cast SDK

Android. Add com.google.android.gms:play-services-cast-framework:latest to your build.gradle—the standard package for Chromecast on Android. Initialize in Application:

class App : Application() { override fun onCreate() { super.onCreate() val options = CastOptions.Builder() .setReceiverApplicationId(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID) .build() CastContext.getSharedInstance(this, executor).addOnSuccessListener { castContext -> // Cast context ready } } } 

DEFAULT_MEDIA_RECEIVER_APPLICATION_ID is the standard Default Media Receiver, which plays HLS, DASH, MP4, MP3. For a custom Receiver, register your app in the Google Cast Developer Console and use your own App ID. For more on CastContext setup, see the Google Cast documentation.

iOS. Add pod 'google-cast-sdk' or GoogleCast via SPM—the main SDK for Chromecast on iOS. The API is similar to Android.

Cast Button in the UI

The Google Cast SDK provides ready-made buttons: UICastButton (iOS) and MediaRouteButton (Android). They show device lists and change appearance when connected:

// In toolbar menu override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_player, menu) CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.media_route_menu_item) return true } 

For Jetpack Compose, use AndroidView with MediaRouteButton.

Starting Playback on the Receiver

val castSession = CastContext.getSharedInstance(context).sessionManager.currentCastSession val remoteClient = castSession?.remoteMediaClient ?: return val mediaMetadata = MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE).apply { putString(MediaMetadata.KEY_TITLE, "Movie Title") putString(MediaMetadata.KEY_SUBTITLE, "Description") addImage(WebImage(Uri.parse(thumbnailUrl))) } val mediaInfo = MediaInfo.Builder(streamUrl) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setContentType("application/x-mpegURL") // HLS, or video/mp4 for MP4 .setMetadata(mediaMetadata) .build() val loadOptions = MediaLoadRequestData.Builder() .setMediaInfo(mediaInfo) .setAutoplay(true) .setCurrentTime(startPositionMs.toLong()) .build() remoteClient.load(loadOptions) 

Playback Control

RemoteMediaClient is the central object for Chromecast playback: play(), pause(), seek(position), setStreamVolume(volume). Track state via a callback:

remoteClient.registerCallback(object : RemoteMediaClient.Callback() { override fun onStatusUpdated() { val status = remoteClient.mediaStatus ?: return val position = status.streamPosition val isPlaying = status.playerState == MediaStatus.PLAYER_STATE_PLAYING updateUI(isPlaying, position) } }) 

Mini Controller and Expanded Controller

Built-in components: MiniControllerFragment—a bottom control bar, and ExpandedControllerActivity—a full-screen player. They work declaratively with minimal code and automatically reflect the Chromecast connection state.

Why Use a Custom Receiver?

The Default Receiver covers 80% of use cases. But if you need a unique interface, Subrip subtitles, analytics, or DRM (Widevine), a custom Receiver is essential. We build a web application in HTML5/JavaScript. A custom Receiver increases development time by 70% but gives full control—4 times more customization options than the Default.

Feature Default Receiver Custom Receiver
Integration time 2–3 days 5–6 days
UI customization Limited Full control
DRM support No Yes (Widevine)
Analytics No Collect any metrics
Complexity Minimal Requires web development

Key Integration Steps

Step Duration Description
Requirements analysis 1 day Define content format, DRM, customization
Receiver choice 0.5 day Default or custom; register in Google Cast console
SDK integration 1 day Add dependencies, initialize CastContext
Cast button implementation 0.5 day Set up MediaRouteButton, handle sessions
Playback control 1 day Play/pause/seek via RemoteMediaClient
Testing 1 day On real devices (Chromecast, Android TV, Google Nest)
Deployment 0.5 day Publish to App Store and Google Play following policies

Cast Session and Reconnection

When Wi-Fi is lost, CastSession enters TEMPORARILY_DISCONNECTED, then DISCONNECTED after 3 minutes. SessionManagerListener.onSessionSuspended / onSessionResumed handle reconnection; we resume playback from the saved position. On app return, the Cast SDK automatically restores the session via CastContext.sessionManager.currentCastSession.

Chromecast on React Native and Flutter

React Native: react-native-google-cast—an unofficial wrapper. It is stable for basic scenarios; advanced features require native code. Flutter: no official package; flutter_google_cast is unstable. For production, we recommend native implementation via MethodChannel. Native solutions are 2 times more reliable than cross-platform wrappers. TV casting from a WebView is also possible, but control is limited.

Additional Custom Receiver Capabilities

A custom Receiver allows you to add custom error handling, analytics integration (Google Analytics, Firebase), and support for non-standard formats (e.g., live streams with delay). See the official documentation for details.

What Is Included

  • Google Cast SDK integration on Android (Kotlin) and iOS (Swift)
  • Cast button and custom UI (MiniController, ExpandedController)
  • Playback control (play/pause/seek/volume)
  • Session handling, reconnection, position saving
  • Testing on real devices (Chromecast, Android TV, Google Nest)
  • Documentation and source code access
  • Post-deployment support (1 month)

Timelines and Cost

Timelines range from 2 to 6 days. Cost is determined individually after an audit of your project. Contact us for a consultation and preliminary estimate. Order your Chromecast streaming solution—we guarantee stable performance on all devices. Get a consultation and ensure your TV casting works flawlessly.