* Fix wrong embedded subtitle track selected when ASS tracks are present The local index of an embedded subtitle was computed among the streams with an EMBED or HLS delivery method, then used to pick a text track group in ExoPlayer. ExoPlayer however exposes every subtitle track of the container, including ASS/SSA tracks that the server burns in when libass is disabled. Each such track placed before the selected one shifted the lookup, so a different track, often in another language, was displayed. Count all non-external subtitle streams for embedded delivery so both lists match. * Keep the requested subtitle when restoring the saved language Restoring the last played subtitle language picked the first subtitle stream in that language on every playback start, including the restart used to switch between baked and non-baked subtitles. Switching from a baked ASS track to an SRT track in the same language therefore selected the ASS track again and went back to transcoding. Keep the requested stream when it matches the saved language and only fall back to the first matching stream otherwise.
Jellyfin for Android TV
Part of the Jellyfin Project
Jellyfin for Android TV is a Jellyfin client for Android TV, Nvidia Shield, and Amazon Fire TV devices. We welcome all contributions and pull requests! If you have a larger feature in mind please open an issue so we can discuss the implementation before you start.
Building
The app uses Gradle and requires the Android SDK. We recommend using Android Studio, which includes all required dependencies, for
development and building. For manual building without Android Studio make sure a compatible JDK and Android SDK are installed and in your
PATH, then use the Gradle wrapper (./gradlew) to build the project with the assembleDebug Gradle task to generate an apk file:
./gradlew assembleDebug
The task will create an APK file in the /app/build/outputs/apk/debug directory. This APK file uses a different app-id from our stable
builds and can be manually installed to your device.
Branching
The master branch is the primary development branch and the target for all pull requests. It is unstable and may contain breaking
changes or unresolved bugs. For production deployments and forks, always use the latest release-x.y.z branch. Do not base production work
or long-lived forks on master.
Release branches are created at the start of a beta cycle and are kept up to date with each published release. Maintainers will cherry-pick selected changes into release branches as needed for backports. These branches are reused for subsequent patch releases.
Translating
Translations can be improved very easily from our Weblate instance. Look through the following graphic to see if your native language could use some work! We cannot accept changes to translation files via pull requests.