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
Previously if the activity tracker got an error from the server during
one of the reports, the timer thread would stop and no further reports
would be sent.
This PR fixes that so it will continue to attempt to send reports since
if playback is continuing without error, the report error is likely
transient. For example, I observed the server returning an error during
its DB optimization scheduled task.
I think this will fix#208
Now when initiating a user or server switch, you can't back out of it
and must select a user/server. This will be useful when PIN code are
implemented down the road.
The app will now disconnect the web socket when backgrounded.
Also lots of internal refactoring
Just adds some logging while navigating around the app. If an error or
crash occurs and users want to share their logs, this information is
useful to know what page.
Logs are never sent without explicit user content and they are only
shared with the Jellyfin server the app is currently connected to. [See
here for more
details](https://github.com/damontecres/Wholphin/wiki/Gathering-app-logs#privacy)
Also stops theme music when the app is paused similar to #191
Refactors lifecycle event observers
When the app is "paused", aka not actively focused, but still visible
(such as when opening Android TV OS menu), playback will pause.
When the app is "stopped", aka not visible (such as pressing Home
button), playback will stop, report playback progress, and return to the
previous screen.
I think this will fix#181, but I don't have a controller to test with
Previously all of the rows on the recommended tab for Movies & TV Shows
were loaded sequentially before any results were shown. This is not a
great experience because some of the queries (eg top rated unwatched)
can take a while sometimes.
This PR starts displaying content once the first 1 or 2 rows is loaded
and then shows placeholders while the rest are querying.
Finally the row queries are now mostly independent so if one errors out,
the rest of the rows will still be displayed.
Closes#180
Fixes#184
Data was being fetched, but the UI wasn't being properly notified to
display the data.
This PR also adjusts so that "focused episode header" still takes up the
space even if the focused episode hasn't fully loaded yet. This prevents
the UI from jumping up and down.
Also #42 is _not_ fixed by this PR because it is a different issue.
Closes#154
Adds a settings to show the current time in the upper right corner.
If enabled, it will also show the end time for the playback on the
overlay.
Closes#133Fixes#142
Theme songs will play for both TV shows and movies, if available. Also,
if there are multiple theme songs, one will be picked randomly instead
of always playing the first.
Additionally, the music now waits to start until the UI has loaded.
Closes#95
Adds a setting (defaults to enabled) to automatically go to a page when
the navigation drawer item is focused after a brief delay.
Basically, if you open the left nav drawer, and scroll down to "Movies"
after a brief delay (600ms), the app will switch to the Movies page
without having to click.
It can be disabled in advanced settings.
When clicking the overview for an item, the dialog now shows details
about each file/media source including video, audio, & subtitle
information.
It only shows the full file path if the user is an administrator.
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
Fetch the theme song info on the IO thread
This would throw an exception on some devices, but it would be caught
without affecting the app, other than just not playing theme music.
This is a workaround for jellyfin/jellyfin-web#7267 to ensure the client
logs are not valid JSON and can be rendered on the `10.11.x` web UI.
Related to #82
Remembers the page position & focused item on both Movie & Series detail
pages
Only loads similar movies & series once so that if you click on one and
go back, it doesn't refresh the entire list
Remember the tab on the Favorite page (if remember tabs is enabled in
settings)
Add a popup when long clicking items on the home page
Also fixes a bug where the latest Recorded TV row would show non-Live TV
items if nothing has ever been recorded.
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!
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
Fixes:
* Issue from #39 where pressing back from playback went back two screens
instead of one
* Sometimes having to click on a server twice to switch to it
* Update UI when marking a single season as watched
* Fix needing to press back twice to hide skip segment buttons
* Fix skip intro/outro behaviors being swapped
* Always attempt to save playback progress when stopping playback
Ensures playback (both theme song & video) is stopped when the app is
backgrounded, like hitting the home button.
Fixes a UI glitch when marking a series as played.
Adds support for playing local movie trailers. External trailers, such
as ones on YouTube, are not yet supported.
Also fixes a couple issues with request handlers
Previously if the app is playing a show's theme song and the app is
backgrounded, such as by pressing Home, the music would continue. This
PR fixes that.
Adds support for playing different versions of a media item.
Additionally, you can pick the audio or subtitle tracks for the chosen
version.
The file with the highest resolution is the default, but you can switch
versions or tracks in the "More" menu.
These choices are persisted across playbacks, just as in #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.
Fixes#10
Adds toggles to disable direct play of AC3 audio, ASS subtitles, and PGS
subtitles. Also a toggle to force down mixing audio to stereo.
This copies the behavior from the official client. I'm not sure if there
is a way to determine if direct playing AC3 is possible because it can
depend on devices other than the Android TV device such as a sound bar.
So it's up to the user to toggle off support if necessary.
Attribution: This PR uses on [code from the official
client](c775603df4/app/src/main/java/org/jellyfin/androidtv/util/profile/deviceProfile.kt).
Adds a tab to the TV Show & Movie screens which displays the genres in
that library as a grid.
You can select the genre to see the items in that library for the genre.
This PR also adds backend changes for further filtering to implement
#13.