Files
RelayTV-Android/README.md
T
markandClaude Fable 5 edb367cca3 feat: system media controls (MediaSession) for the active server (#1)
* feat: add system media controls for the active server

Add a media3 MediaSessionService that mirrors playback on the active
RelayTV server as a system media session (lock screen / quick settings):

- MediaControlService polls GET /status and publishes state, metadata,
  artwork, and remote volume; forwards play/pause, next/previous, seek,
  stop, and volume to the server HTTP API
- RelayRemotePlayer implements SimpleBasePlayer over the remote state
- RemoteStatus parses /status defensively across server versions
- New Settings screen (toolbar menu) with a media-controls toggle and a
  Manage servers shortcut; fix open_servers intent handling via
  onNewIntent when MainActivity is already running

Release prep:

- Bump to versionCode 6 / versionName 1.3.0
- Wire optional release signing from MYAPP_RELEASE_* gradle properties
- Add FOREGROUND_SERVICE(_MEDIA_PLAYBACK) permissions and lint opt-ins
- Update privacy policy, release checklist (Play Console foreground
  service declaration), README, and Gradle daemon heap

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci: sign release bundle in GitHub Actions

Decode the upload keystore from the RELEASE_KEYSTORE_BASE64 secret and pass
the MYAPP_RELEASE_* signing properties to Gradle via ORG_GRADLE_PROJECT_*
env vars, so tagged releases produce a signed .aab. Fail fast if the keystore
secret is missing, and verify the bundle signature after the build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:45:34 -05:00

4.2 KiB
Raw Blame History

RelayTV Android Companion App

RelayTV Android is the Android companion app for the self-hosted RelayTV server. It gives you a fast mobile remote, embedded RelayTV web UI access, multi-server management, and Android share targets for queueing or immediately playing links on a RelayTV device.

RelayTV server:
https://github.com/mcgeezy/relaytv

Home Assistant integration:
https://github.com/mcgeezy/relaytv-ha

Support the project:
https://buymeacoffee.com/relaytv


Features

  • Multi-server support
  • Health verification before saving a server
  • LAN auto-discovery of _relaytv._tcp servers using Android NSD / mDNS
  • Embedded RelayTV /ui WebView access
  • System media controls (lock screen / quick settings) mirroring playback on the active server
  • Reconnect and heartbeat recovery
  • Dedicated Android share targets:
    • RelayTV QueuePOST /smart
    • RelayTV PlayPOST /play_now
  • HTTP and HTTPS support for self-hosted RelayTV servers
  • Lightweight remote-friendly workflow for local RelayTV control

Why Use The Android App

RelayTV Android is designed to make self-hosted TV playback feel easy from your phone.

Use it to:

  • Quickly open and control your RelayTV server
  • Share links from YouTube and other apps directly to your TV
  • Queue media without interrupting what is already playing
  • Start playback immediately when needed
  • Manage more than one RelayTV server from one app

Screenshots

Add screenshots here for release.


Requirements

  • Android 8.0+ (minSdk 26)
  • A reachable RelayTV server on your LAN or trusted remote URL

Companion Projects

Planned / work in progress

  • iPhone companion app
  • Continued Android UX polish
  • Expanded companion app ecosystem

Build And Test

Validate host environment:

./scripts/check-android-env.sh all

Install or refresh Android SDK components:

./scripts/bootstrap-android.sh

Debug build, lint, and unit tests:

./scripts/build-debug.sh

Debug APK output:

app/build/outputs/apk/debug/app-debug.apk

Release bundle and release lint:

./scripts/build-release.sh

GitHub release assets are generated automatically when you push a tag like:

git tag v1.2.0
git push origin v1.2.0

Connected tests on a physical device or emulator:

./scripts/test-connected.sh

Release Notes


Network Notes

RelayTV Android supports both:

  • http://
  • https://

HTTP support is intentionally retained because RelayTV is often used as a trusted LAN-first service on private IPs and hostnames. If your RelayTV server is exposed outside your private network, HTTPS is recommended.


API Surface Used By The App

  • GET /health
  • GET /ui
  • POST /smart
  • POST /play_now

Typical Workflows

Queue from Android share sheet

Share a link from another app and choose RelayTV Queue to send it to RelayTVs smart play/enqueue behavior.

Play immediately from Android share sheet

Share a link and choose RelayTV Play to start playback right away.

Open your RelayTV UI from your phone

Use the app as a quick launcher and controller for one or more RelayTV servers.


Support The Project

If RelayTV Android saves you time or improves your setup, consider supporting development across the RelayTV ecosystem.

Buy me a coffee:
https://buymeacoffee.com/relaytv


Contributing

  • Keep Android UX aligned with RelayTVs self-hosted, local-first model
  • Preserve the queue vs play-now share behavior
  • Avoid regressions in reconnect and server discovery flows

License

Same license as the RelayTV core project:
https://github.com/mcgeezy/relaytv