* 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>
3.2 KiB
3.2 KiB
RelayTV Android Release Checklist
Use this checklist before cutting a public release or uploading a new Play Console build.
Build Readiness
- Verify Android toolchain prerequisites:
./scripts/check-android-env.sh all
- Install or refresh required SDK components:
./scripts/bootstrap-android.sh
- Validate debug build, lint, and unit tests:
./scripts/build-debug.sh
- Validate release bundle and release lint:
./scripts/build-release.sh
- If you have a device connected, run instrumentation tests:
./scripts/test-connected.sh
Versioning
- Increment
versionCodefor every public upload. - Set
versionNameto the user-facing release number. - Verify the user agent string and release notes match the version being shipped.
Play Console Requirements
- Keep
targetSdkat the current Google Play minimum.- As of April 3, 2026, Play requires new apps and updates to target Android 15 / API 35.
- Upload an Android App Bundle:
app/build/outputs/bundle/release/app-release.aab
- Use Play App Signing in Play Console.
- Complete the Data safety form for this release.
- The media controls feature adds no off-device data collection; no Data safety changes are expected.
- Provide a valid support email in Play Console.
- Publish a public privacy policy URL.
- This repo includes a draft policy in
docs/PRIVACY_POLICY.md. - The in-app privacy menu points to the GitHub-hosted copy on
main.
- This repo includes a draft policy in
- Complete the Foreground service permissions declaration (App content -> Foreground service permissions).
- Declares
FOREGROUND_SERVICE_MEDIA_PLAYBACK, used by the media controls notification that mirrors playback on the user's RelayTV server. - Requires a short demo video showing the media controls notification while a RelayTV server is playing.
- Declares
App-Specific Verification
- Confirm manual server entry still works for both HTTP and HTTPS RelayTV servers.
- Confirm LAN discovery finds
_relaytv._tcpservices on the local network. - Confirm both Android share targets work:
RelayTV Queue->/smartRelayTV Play->/play_now
- Confirm the WebView reconnects after the RelayTV server restarts or the network drops.
- Confirm the privacy menu opens the published policy URL.
- Confirm system media controls appear while the active server is playing:
- Play/pause, next/previous, seek, and the volume slider control the server.
- The notification disappears after the server goes idle.
- The Settings toggle ("Media controls") removes and restores the controls.
- Confirm the Settings screen opens from the toolbar menu and "Manage servers" opens the server picker.
Signing And Distribution
- Configure your release signing key or Play App Signing flow.
- Archive the signed
.aab, release notes, and the exact commit SHA used for the build. - Tag the release in git after the Play upload is verified.
Official References
- Target API requirement:
- App setup, versioning, and Play App Signing:
- Developer support contact requirements: