From 1d6487774c2adbb693aaf7b98c3850a57811319c Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Tue, 25 Aug 2026 20:12:50 +0200 Subject: [PATCH] fix(android): subtitles on the picture, not on a black bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every subtitle line arrived in an opaque black box wide enough to sit across the picture. That box is what Android hands back when the viewer has set no captioning preferences: SubtitleView.setUserDefaultStyle() reads the system style and falls back to media3's DEFAULT, which is white on opaque black. Dropping the box is not the same as replacing the style. Someone who has configured captions in accessibility settings has said something specific about colour, typeface and edges, and overriding all of it to remove a background would answer a question they did not ask. Their style is kept and only the two colours that paint a box — background and window — are cleared. A style specifying no edge gets a black outline, since without a box the text must supply its own contrast or it is unreadable over a bright scene. One that already names an edge keeps it: that viewer has said how they want their captions separated from the picture. Compiles and packages, but NOT yet seen on a device — the tablet was disconnected before it could be deployed, so the requirement is recorded as "Done (pending device verification)" and this must not be tagged into a release until someone has looked at it. TRACES: UR-020 | DR-261 --- CHANGELOG.md | 11 ++++ docs/requirements.md | 1 + .../jellytau/player/JellyTauPlayer.kt | 61 +++++++++++++++++-- 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d62bc86..d8d74743 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,17 @@ generated trace matrix lives in [docs/traceability.md](docs/traceability.md). For how long each fixed defect had been shipping before it was found, see [docs/defect-windows.md](docs/defect-windows.md). +## Unreleased + +### 🐛 Fixes + +- **Subtitles sit on the picture instead of on a black bar.** Every line arrived + in an opaque box, which is what Android hands back when no captioning + preferences have been set. The box is gone; the text keeps its own outline so + it stays readable over a bright scene. If you *have* set up captions in + Android's accessibility settings, your colours, typeface and edges are still + used — only the background is cleared. (UR-020 → DR-261) + ## v0.11.2 ### 🐛 Fixes diff --git a/docs/requirements.md b/docs/requirements.md index d502a8b1..7df7d907 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -454,6 +454,7 @@ Internal architecture, components, and application logic. | DR-258 | An audio-track change is honoured by **re-opening the stream** when the stream cannot carry the track. Jellyfin builds a transcode around one `AudioStreamIndex`, so the alternate tracks are not in it — but the native path only ever called `setAudioTrack(n)`, which indexes ExoPlayer's audio track *groups*. On Android that is the common case, since any source whose default audio codec the device cannot decode is transcoded: ExoPlayer held one audio track while the menu listed every track in the file, so every selection warned `Invalid audio track index` and was dropped, leaving the default track playing with nothing in the UI saying so. `determine_audio_track_switch_strategy` now decides by whether the stream in front of the engine carries the track at all — a direct play still selects in place, a transcode is re-negotiated at the chosen index and resumed. Where it resumes is the player's answer, not the UI's: the native path has no `