Android TV Application Development
Android TV and Google TV are not the same. Google TV (Fire TV is a separate story) is a layer on top of Android TV with a different home page and different content requirements. An application that passes review for Android TV may behave unexpectedly on Google TV due to launcher differences. This must be considered during the design phase.
D-pad Navigation and Focus Management
The main difference from mobile development is that the user controls a D-pad remote. No touchscreen. Focus moves between Views through the Android Focus Engine, and this works predictably only if the layout is not overly complex.
The RecyclerView problem: with nested horizontal RecyclerView within a vertical layout (typical Netflix pattern), focus often gets lost when transitioning between rows. A custom LinearLayoutManager with overridden onInterceptFocusSearch() helps. Without it, when the user presses "down", focus may jump to the end of the screen instead of the next row.
Leanback Library. androidx.leanback:leanback is the standard component set for Android TV: BrowseSupportFragment, RowsSupportFragment, PlaybackSupportFragment. They implement standard TV UX out of the box: horizontal rows with titles, detailed content screens, playback with transport controls. Leanback understands D-pad natively.
However, Leanback is aging. Jetpack Compose for TV (androidx.tv:tv-compose) has been actively developed since 2023. TvLazyRow, TvLazyColumn, Carousel are declarative components with built-in focus management. For new projects, Compose TV is preferred; for legacy support, use Leanback.
Video Player
ExoPlayer (now androidx.media3:media3-exoplayer) is the Android TV standard. Supports DASH, HLS, SmoothStreaming, and DRM via DefaultDrmSessionManager (Widevine L1 on certified devices). For TV, it's critical to properly configure TrackSelector: video track selection should account for display resolution rather than simply choosing the maximum—a 4K stream on a 1080p screen wastes bandwidth.
Widevine L1 DRM requires a certified device. SHIELD TV, Chromecast with Google TV support L1. Most budget Android TV boxes use L3. This affects the maximum resolution of protected content (L3 is limited to 540p). Check the level via MediaDrm.isCryptoSchemeSupported(WIDEVINE_UUID) plus a security level property query.
Google TV / Recommendation Feed Integration
Google TV displays personalized recommendations on the home screen from connected applications. To participate, implement TvContractCompat.Programs or the newer WatchNextPrograms API through a ContentProvider. This is separate work: populating WatchNextPrograms on each playback, updating watch progress, removing completed programs.
Fire TV uses a different mechanism—App-to-App Communication through Intent for deep links to content.
Review and Certification
The Android TV application is published to Google Play with <uses-feature android:name="android.software.leanback"/> and <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>. The latter is mandatory—without it, Play Store won't show the application on TV devices.
Google verifies: navigation is accessible via D-pad without touchscreen, no UI elements require touch, the application properly handles KEYCODE_BACK and KEYCODE_DPAD_*.
Timeline
Information or media application on Leanback: 5–9 weeks. Full-featured VOD application with DRM, recommendations, and offline downloads: 12–20 weeks. Cost is calculated individually after analyzing content requirements and monetization.







