No description
* Refactor playback code * Fix back state when playing media and rotating device Problem was playerItems were re-emitted on fragment creation after config change. LiveData by design emit on every subscribe (observe) so to avoid that there are several possibilities. 1) easiest, observe playerItems not in onCreate but in playButton.clickListener. Stupid, since then we need to remember to only observe in this special place. 2) SingleLiveData - kind of hacky since LiveData were designed to behave this way so we don't want to go against their design. 3) Use Kotlin flow instead. I chose the flow approach since it's Kotlin native and modern way to do things and behaves much more Rx-like. Since now we need to call collect instead of observe and launch in coroutine, I added utility method to make this easier. Also, in the future we might want to improve this further, either by coming up with new way entirely or by at least moving this to parent fragment from which all fragments that want to play media will inherit and thus making it easy to use and maintain. Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com> |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
.idea | ||
app | ||
gradle/wrapper | ||
images | ||
.gitignore | ||
build.gradle.kts | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
PRIVACY | ||
README.md | ||
settings.gradle.kts |
Findroid
Findroid is third-party Android application for Jellyfin that provides a native user interface to browse and play movies and series.
I am developing this application in my spare time.
This project is in its early stages so expect bugs.
Screenshots
Home | Library | Movie | Season | Episode |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Features
- Completely native interface
- Supported media items: movies, series, seasons, episodes
- Direct play only, (no transcoding)
- ExoPlayer
- Video codes: H.263, H.264, H.265, VP8, VP9, AV1
- Support depends on Android device
- Audio codes: Vorbis, Opus, FLAC, ALAC, PCM µ-law, PCM A-law, MP1, MP2, MP3, AMR-NB, AMR-WB, AAC, AC-3, E-AC-3, DTS, DTS-HD, TrueHD
- Support provided by ExoPlayer FFmpeg extension
- Subtitle codecs: SRT, VTT, SSA/ASS, PGSSUB
- SSA/ASS has limited styling support see this issue
- Video codes: H.263, H.264, H.265, VP8, VP9, AV1
- NEW MPV Player
- Should play everything, including SSA/ASS subs with proper styling!
- Optionally force software decoding when hardware decoding has issues.
- Issues:
- Can only play one item at a time, doesn't transistion to the next episode
Planned features
- Websocket connection (Syncplay)
- Caching
- Offline playback / downloads
- Picture in picture mode
- Chromecast support
This project is licensed under GPLv3.
The logo is a combination of the Jellyfin logo and the Android robot.
The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.
Android is a trademark of Google LLC.
Google Play and the Google Play logo are trademarks of Google LLC.