Commit graph

34 commits

Author SHA1 Message Date
Ray
b78f5fcc77
Better support for remote media (HLS/DASH) (#675)
## Description
Check if playback is for a remote source and, if so, play that remote
URL directly. Works for both ExoPlayer & MPV.

Also adds support for direct playback for DASH in ExoPlayer.

### Related issues
Closes #471
Closes #666
2026-01-11 19:43:21 -05:00
Ray
49740c47cf
Create media session during playback allowing for external control (#640)
## Description
Creates a `MediaSession` during playback which allows for external
control such as via smart speakers, Google Home app, etc

Note: one limitation is that seeking previous/next items in the playlist
isn't supported. This is because Wholphin manages that independent of
the `Player`, so additional dev work is needed for this.

### Related issues
Closes #622
Might help with #415
2026-01-07 12:49:43 -05:00
Ray
9ae4965c2a
Add resume/continue watching items to Android TV watch next row (#372)
## Details

Adds resume and continue watching items for the logged in user to the
Android TV OS level watch next "channel"
(https://developer.android.com/training/tv/discovery/watch-next-add-programs).

## Issues
Closes #206
Related to #581
2025-12-27 15:40:45 -05:00
Ray
494ff07b72
Fix smart & default subtitle selection logic (#579)
## Description
Fixes the logic for subtitle selection when using `Smart` or `Default`
server modes. Also takes into account unknown languages.

This is heavily inspired by [the server selection
logic](https://github.com/jellyfin/jellyfin/blob/release-10.11.z/Emby.Server.Implementations/Library/MediaStreamSelector.cs).
For better or for worse, Wholphin implements this client side.

### Related issues
Fixes #570
2025-12-27 14:22:40 -05:00
Justin Caveda
bcc7e660ea
Allow debug builds to to be installed alongside the stable app (#565)
## Description

This PR updates the debug build config to allow side by side
installation with the mainline/stable release by changing the app name
and app ID.

This is a convenience change to allow contributors to test debug builds
on their personal devices without overwriting the existing stable
version of the app
2025-12-24 13:31:06 -05:00
Ray
bbfbc13532
Backdrop improvements (#476)
## Description

The backdrop image shown on most pages is now configurable in advanced
settings:
* Image w/ dynamic color - Shows the backdrop with dynamic color filling
the entire space (new default)
* Image only - Shows only the backdrop image (current Wholphin behavior)
* None - Don't show any backdrops

Additionally, the backdrop is retained between page loads for the same
items.

## Acknowledgements

Big thanks to @YogiBear12 from which the idea and implementation for the
dynamic color was adapted from!

Code adapted from
https://github.com/YogiBear12/Halfin/blob/main/COLOR_EXTRACTION_AND_BACKDROP.md#backdrop-fading-and-transitions

## Issues

Closes #221
Closes #461
Closes #442



https://github.com/user-attachments/assets/1acbc487-c697-44d7-89ed-e7e4c9169360
2025-12-17 11:18:57 -05:00
Damontecres
d0bfdac3bd
Fix version name from #350 2025-11-30 22:24:34 -05:00
damontecres
258c50a95e
Add support for Android TV 6 & 7.0 (#350)
Adds support for Android TV 6.0 & 7.0 by reduce the min SDK to 23. Going
below 23 isn't practical since new releases of Jetpack libs require 23+.

Also includes some clean up for better gradle syncs & actually use the
datetime APIs available from desugaring on older versions.

Needs more testing before merge

Closes #341
2025-11-30 20:26:42 -05:00
damontecres
78e6304571
Prep work for play store distribution (#301)
Allows for disabling in-app updates and more flexible tag/version codes
2025-11-22 12:57:47 -05:00
damontecres
6be2662d4e
Add experimental MPV player backend (#161)
Experimental MPV player backend

Related to #14, #22, & #85

You can switch to MPV in advanced settings and toggle using hardware
decoding or not.

This uses code and buildscripts from
https://github.com/mpv-android/mpv-android, plus other third party
libraries to build MPV
2025-11-16 18:46:25 -05:00
damontecres
4945bef008
Cache ffmpeg build (#115)
Speed up PR builds by caching the ffmpeg module build artifact
2025-10-30 14:32:07 -04:00
damontecres
3f7c2ac730
UI Updates & Fixes (#114)
Fixes #113 

- Ensures all audio and subtitle options are shown during playback
- Fix home rows not being at top when going back
- Show error message when background home page refresh fails

Also shows more details for login failures and adds a link to the debug
page (with log info) after multiple login failure attempts. Hopefully
this can help diagnose #112 and #18
2025-10-30 13:41:46 -04:00
damontecres
b1275ae210
Include ffmpeg extensions for some audio formats (#109)
Related to #103

Adds ffmpeg decoder module to support a few extra audio formats such as
AC3, EAC3, DTS, & TrueHD.

This increases the apk size by about 5.4mb (release 17.4mb->22.8mb), but
definitely worth it for the added support.
2025-10-29 20:34:41 -04:00
damontecres
06f2c1260d
Add slf4j-simple (#101)
Fixes #99 

While not an actual error, it does look like a transitive dependency of
the Jellyfin Kotlin SDK may log using slf4j, so it would be good to
include an slf4j implementation just in case.
2025-10-28 19:28:54 -04:00
damontecres
2667090485
Send crash reports to the server (#65)
Adds ability to send app crash reports to the last connected server. The
app prompts you before sending. There is an advanced settings to disable
this as well.

Additionally, there is an advanced settings button to send the app logs
to the current server.

The resulting reports can be found on the server's web UI under
Dashboard->Logs

If sharing the logs, make sure there's no private information present!
2025-10-26 07:35:42 -04:00
damontecres
05f3811149
Add Live TV & DVR Support (#49)
Closes #1 

Adds support for Live TV & DVR functionality.

TODO:
- [x] EPG / TV Guide
- [x] View DVR schedule
- [x] Play live TV channel
- [x] Record program
- [x] Record Series
- [x] Cancel recordings
- [x] Access previously recorded content
2025-10-23 22:46:16 -04:00
damontecres
177e009f8c
Format changelog in app (#51)
Formats the in-app changelog when updating

Also allows for force updating to allow for switching develop tags.
2025-10-21 19:48:19 -04:00
damontecres
e2db5ab4f3
Enable minify/proguard (#29) 2025-10-17 19:44:36 -04:00
damontecres
6194eba8c5
Remember playback choices & fix some track selection issues (#26)
Remembers changes in playback tracks across playbacks. So, if you change
the audio track, quit the app, and return to the same id, the app will
play the audio track previously chosen.

Additionally, this PR fixes a UI inconsistency when there are multiple
versions of a item. Previously sometimes the audio/subtitle tracks for
wrong version would be shown during playback.
2025-10-17 17:19:44 -04:00
Damontecres
d39ed721d5
Rebrand 2025-10-15 15:27:30 -04:00
Damontecres
d4b3c554f8
Show loading/error for large seasons 2025-10-15 13:27:48 -04:00
Damontecres
730a578117
Move NavigationManager to hilt 2025-10-08 18:13:28 -04:00
Damontecres
b63e933386
Simplify grid focus, handle items w/ missing images 2025-10-08 15:49:31 -04:00
Damontecres
c642636da7
Updates to build config for signing 2025-10-07 15:44:29 -04:00
Damontecres
8cda98d6aa
Updates to series detail page 2025-10-07 14:46:37 -04:00
Damontecres
de36eb7072
Add dependency license info 2025-10-03 19:31:50 -04:00
Damontecres
b6f9aee5d4
Dependency bumps 2025-10-02 12:15:45 -04:00
Damontecres
3e7f11c588
Minimal playback 2025-09-22 17:02:32 -04:00
Damontecres
80070f4174
Basic navigation 2025-09-22 12:09:41 -04:00
Damontecres
51ad92f539
Basic home page & images 2025-09-21 22:16:42 -04:00
Damontecres
76d78246db
Basics for user prefs, logging in, etc 2025-09-21 19:56:40 -04:00
Damontecres
763521aabf
Add hilt 2025-09-20 17:42:09 -04:00
Damontecres
b0fa3be520
Add dependencies 2025-09-20 17:06:40 -04:00
Damontecres
2d02ff4cbe
Initial app creation 2025-09-20 16:36:38 -04:00