This release was long in the making!
The app now uses the shiny new Kotlin SDK, which is more in line with the official API, easier to use, allows for additional features and is a first preparation of the fully native client in the future.
With the new SDK, the native video player based on ExoPlayer could be rewritten to handle playback completely within the app, which includes playlist support, a better device profile, improved audio and subtitle stream selection, and lots of other changes under the hood to make the code easier to maintain and understand for new contributors. With those improvements, it is now the default player in Jellyfin Android. If you face any issues with it, please report them on our issue tracker (if not reported already) or if necessary switch back to the web player in the client settings.
The update also includes improvements to Google Cast support and lots of crash fixes. There may still be some issues hidden in the code, so we appreciate your beta feedback and crash reports. You can join the beta program on Google Play here.
⚠️ Note before updating: The new SDK and thus this update only supports Jellyfin servers on version 10.7.0 and above, so make sure to consider that before and if possible update your Jellyfin installation!
Changelog
✨ Features and improvements
- Add support for AV1 #275, by @Maxr1998
- Improve fullscreen, orientation and PiP handling #286, by @ThreeFive-O
- Drop support for 10.6 #258, by @Maxr1998
- Add download location option in client settings #276, by @CarlosOlivo
- Native player improvements #297, by @Maxr1998
- Migrate ExoPlayer to SDK and decouple from webapp #351, by @Maxr1998
- Make ExoPlayer the default video player implementation #363, by @Maxr1998
🔥 Crash fixes
- Fix crash caused by fragment transaction on background thread #296, by @Maxr1998
- Various crash fixes and improvements #298, by @Maxr1998
- Fix Chromecast integration crashing the app without Play Services #305, by @Maxr1998
- Check WebView support and version #326, by @Maxr1998
- Fix app crashing when webview is missing #365, by @Maxr1998
🐛 Bug fixes
- Fix background color in web player #272, by @Maxr1998
- Don't unnecessarily set statusBarColor in native player #273, by @Maxr1998
- Fix support for playlists in external player #267, by @CarlosOlivo
- Miscellaneous casting fixes #287, by @nielsvanvelzen
- Fix library browser recents #352, by @Maxr1998
- Client settings layout and wording tweaks #358, by @Maxr1998
🔨 Refactoring
- Refactor and split up extensions #270, by @Maxr1998
- Refactor brightness handling, reset brightness when leaving player #271, by @Maxr1998
- Chromecast JS: Improve error logging. #322, by @Codex-
- WebView: Use timber for logging #323, by @Codex-
- Use Activity Result APIs for External player #327, by @Maxr1998
- Migrate to Jellyfin Kotlin SDK (1.0.0-beta.3) #333, by @nielsvanvelzen
⚙️ Build changes
- Update dependencies #293, by @nielsvanvelzen
- Tweak .editorconfig #306, by @Maxr1998
- Dependency updates #307, by @Maxr1998
- Add distributionSha256Sum to prevent MITM attacks. #308, by @diederikdehaas
- Add merge conflict labeler and gradle update and validate tasks #309, by @nielsvanvelzen
- Dependency maintanance #325, by @Maxr1998
- Add workflow config for GitHub CI #262, by @Maxr1998
- ci(update-action): update actions/setup-java to v2 #335, by @h1dden-da3m0n
- ci: bump actions/cache from v2 to v2.1.4 #336, by @dependabot
- Dependency updates #337, by @Maxr1998
- Update Gradle Wrapper from 6.8.3 to 7.0 #339, by @github-actions
- Update dependencies, drop JCenter #349, by @Maxr1998
- Dependency updates + Detekt #361, by @Maxr1998
- Update Jellyfin SDK to beta 4 #362, by @Maxr1998
- Update Kotlin to 1.5.0 #364, by @Maxr1998
ℹ️ Other changes
- Add store links to readme #313, by @nielsvanvelzen
- Optimize all fastlane bitmaps #334, by @nielsvanvelzen
- Update bug report template #359, by @Maxr1998