Skip to content

feat(tv): add native Android TV support#2

Merged
PastaHimself merged 15 commits into
mainfrom
feat/android-tv-support
Jul 16, 2026
Merged

feat(tv): add native Android TV support#2
PastaHimself merged 15 commits into
mainfrom
feat/android-tv-support

Conversation

@PastaHimself

Copy link
Copy Markdown
Owner

Summary

  • add automatic TV detection with Automatic, Mobile, and TV overrides
  • add a Leanback launcher entry while keeping the existing application ID and APK
  • add a remote-friendly TV navigation root for Home, Subscriptions, Search, Library, Settings, and playback
  • reuse Flow's existing repositories, shared player state, Media3 manager, downloads, and data stores
  • keep phone and tablet navigation on the existing mobile path
  • add focused unit coverage for mode resolution, TV destinations, and remote media-key mapping

Architecture

MainActivity remains Flow's single lifecycle and playback host. It reacts to the stored interface mode and renders either the existing FlowApp or the new FlowTvApp. TvActivity is only a Leanback launcher bridge.

The interface preference is stored in its own Preferences DataStore, so this change does not touch the Room schema or require a migration.

Validation

  • static XML and whitespace checks passed locally
  • local Gradle execution was unavailable because the sandbox could not resolve the Gradle distribution host
  • GitHub Actions is the authoritative compile and test gate for this branch

Manual checks still needed

  • launch from an Android TV or Google TV home screen
  • verify D-pad focus traversal across the rail, rows, search, library, and player controls
  • verify media keys and back handling during playback
  • verify switching Automatic/Mobile/TV preserves active playback
  • verify existing phone launch, navigation, PiP, and deep links

@PastaHimself
PastaHimself marked this pull request as ready for review July 16, 2026 10:36
@PastaHimself
PastaHimself merged commit fcb0ace into main Jul 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant