* 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>
70 lines
3.2 KiB
Markdown
70 lines
3.2 KiB
Markdown
# RelayTV Android Release Checklist
|
|
|
|
Use this checklist before cutting a public release or uploading a new Play Console build.
|
|
|
|
## Build Readiness
|
|
|
|
1. Verify Android toolchain prerequisites:
|
|
- `./scripts/check-android-env.sh all`
|
|
2. Install or refresh required SDK components:
|
|
- `./scripts/bootstrap-android.sh`
|
|
3. Validate debug build, lint, and unit tests:
|
|
- `./scripts/build-debug.sh`
|
|
4. Validate release bundle and release lint:
|
|
- `./scripts/build-release.sh`
|
|
5. If you have a device connected, run instrumentation tests:
|
|
- `./scripts/test-connected.sh`
|
|
|
|
## Versioning
|
|
|
|
1. Increment `versionCode` for every public upload.
|
|
2. Set `versionName` to the user-facing release number.
|
|
3. Verify the user agent string and release notes match the version being shipped.
|
|
|
|
## Play Console Requirements
|
|
|
|
1. Keep `targetSdk` at the current Google Play minimum.
|
|
- As of April 3, 2026, Play requires new apps and updates to target Android 15 / API 35.
|
|
2. Upload an Android App Bundle:
|
|
- `app/build/outputs/bundle/release/app-release.aab`
|
|
3. Use Play App Signing in Play Console.
|
|
4. Complete the Data safety form for this release.
|
|
- The media controls feature adds no off-device data collection; no Data safety changes are expected.
|
|
5. Provide a valid support email in Play Console.
|
|
6. 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`.
|
|
7. 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.
|
|
|
|
## App-Specific Verification
|
|
|
|
1. Confirm manual server entry still works for both HTTP and HTTPS RelayTV servers.
|
|
2. Confirm LAN discovery finds `_relaytv._tcp` services on the local network.
|
|
3. Confirm both Android share targets work:
|
|
- `RelayTV Queue` -> `/smart`
|
|
- `RelayTV Play` -> `/play_now`
|
|
4. Confirm the WebView reconnects after the RelayTV server restarts or the network drops.
|
|
5. Confirm the privacy menu opens the published policy URL.
|
|
6. 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.
|
|
7. Confirm the Settings screen opens from the toolbar menu and "Manage servers" opens the server picker.
|
|
|
|
## Signing And Distribution
|
|
|
|
1. Configure your release signing key or Play App Signing flow.
|
|
2. Archive the signed `.aab`, release notes, and the exact commit SHA used for the build.
|
|
3. Tag the release in git after the Play upload is verified.
|
|
|
|
## Official References
|
|
|
|
1. Target API requirement:
|
|
- https://developer.android.com/google/play/requirements/target-sdk
|
|
2. App setup, versioning, and Play App Signing:
|
|
- https://support.google.com/googleplay/android-developer/answer/9859152
|
|
3. Developer support contact requirements:
|
|
- https://support.google.com/googleplay/android-developer/answer/113477
|