Commit graph

30 commits

Author SHA1 Message Date
nomadics9
8482df9733 feat: choice of codec in network settings / bugfix: nullsafe fix 2024-07-21 00:42:35 +03:00
nomadics9
21ae815223 rework: getting original resolution for quality selection dialog 2024-07-20 23:55:34 +03:00
nomadics9
c79342523b refactor: strings & naming standard for icon 2024-07-20 23:12:12 +03:00
nomadics9
7adcc50d75 rework: Enum 2024-07-20 22:28:38 +03:00
nomadics9
6dded2e726 bugfixes: deviceId / code: New Enum VideoQuality 2024-07-20 08:36:23 +03:00
nomadics9
ccc6788a02 feat: Transcoding stream in player selection /code: prep repo for next commit transcoding downloads 2024-07-19 02:20:55 +03:00
Jarne Demeulemeester
c01ed644b2
feat: native 10.9 trickplay (#763)
* feat: native trickplay

TODO: update downloaded trickplay data

* chore: fix tv build

* fix: set dispatcher on image loading to remove flicker

* feat: download trickplay data

* refactor: simplify trickplay info by only loading a single resolution

* refactor: follow jellyfin naming of trickplay
2024-06-22 18:21:24 +02:00
Jarne Demeulemeester
7b3523e605
chore(deps): update dependencies
androidx-activity 1.8.2 -> 1.9.0
androidx-compose-bom 2024.04.00 -> 2024.04.01
androidx-compose-compiler 1.5.11 -> 1.5.12
androidx-core 1.12.0 -< 1.13.0
jellyfin-media3-ffmpeg-decoder 1.2.1+1 -> 1.3.1+1
2024-04-20 11:06:52 +02:00
Jarne Demeulemeester
f61f65828f
fix: handle IllegalArgumentException from setPictureInPictureParams 2024-03-04 19:37:13 +01:00
Natanel Shitrit
c39bdce845
feat: chapters (#466)
* Add chapter markers and "skip chapter" on long press

* Fix linting problems

- Missing comma
- Unused import
- Comment block

* Add preferences options

* Drop chapter support for ExoPlayer

* Fix linting

* Remove Trailing spaces

* Remove TODO from marker color

* Move code to function

* Optimize imports

* Fix crash on episode skip

* Disable player control view animation

* Avoid crash when there are no chapters for media item

* Skip to next episode when skipping last chapter

* Load chapters from Jellyfin API instead of MPV Player

* Remove chapter gesture

* Fix build

* Fix linting

* Fix linting

* Support chapters with offline media

* Remove debug print

* Add chapter skipping

* Remove trailing spaces

* fix(chapters): display correct chapter while seeking

* refactor: faster and cleaner `getCurrentChapterIndex`

* refactor: seek to start of current chapter if player position is more than 5 seconds past start of chapter

* refactor: change "Matroska chapters" to just "Chapters"

The chapters feature also works for MP4 files so just make it generic

* Bump database version

* Add auto-migration for database version bump

* Save database schema

* chore: clean up

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-17 16:45:07 +01:00
Jarne Demeulemeester
3e3d749f62
refactor: remove back button in locked controls 2024-02-03 22:29:32 +01:00
Natanel Shitrit
42df641c03
feat: automatic PiP animation (#648)
* Add automatic PiP animation

* Fix linting

* Fix linting

* chore: fix merge conflict

* fix: disable pip gesture when media is paused

* fix: crash when gestures are disabled

* fix: keep auto enter enabled after using button

---------

Co-authored-by: Cd16d <98320806+cd16b@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-03 22:04:48 +01:00
Cd16d
3ba5a73c74
fix: pip zoom start player maximized (#640)
* fix zoom

* update isZoomEnabled inside updateZoomMode

To avoid future issues, I will update `isZoomEnabled` inside `updateZoomMode`.

* Revert " update isZoomEnabled inside updateZoomMode"

This reverts commit 9b539e1830bc76db0c540a51299f05a09c553d00.

* fix: isZoomEnable

* val enableZoom for readability

* lint
2024-02-03 18:22:01 +01:00
Cd16d
c67f6c265b
fix: pip remember zoom and auto-brightness (#638) 2024-01-28 14:11:34 +01:00
Jarne Demeulemeester
55427036b2
feat(phone): use custom track selection dialog for default player
Use media3 track type instead of mpv track type
Simplify track selection dialog
2024-01-01 12:23:53 +01:00
Jarne Demeulemeester
db9a6d6877
feat(phone,exoplayer): allow audio track to be disabled 2023-12-31 11:19:28 +01:00
Jarne Demeulemeester
218b4f1af4
refactor: replace SharedFlows with Channels for sending events 2023-11-06 23:42:00 +01:00
Jarne Demeulemeester
dd826fc38d
fix: crash when aspect ratio is 0 2023-09-25 22:35:33 +02:00
Cd16d
a36c4f0dca
fix: pip (#481)
* fix pip

* refactor: make isPipSupported more readable

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-24 21:29:10 +02:00
Cd16d
d28e80d68e
feat: picture-in-picture (#277)
* add pip

* fixed OnResume() OnStop()
add picture in picture button
add pip settings

* fixed sourceRectHint
add aspectRatio

* fix import

* improve hide playerControls

* add onNewIntent()

* Home button/gesture settings

* add summary

* add GESTURE_EXCLUSION_AREA_SIDE

* remove if else in sourceRectHint
fix onStop() behavior

* fix behavior when using pip button, now go home

* test

* fix onStop()

* fix: mpv aspect ratio

* fix when in PiP mode and starting new playback

* refactor: pip implementation

Remove option to disable pip button, always show the button when pip is supported
Remove the option to completely disable pip
Format using ktlint

* fix when in pip mode and play a new video

* fix recent app behavior

* lint

* Some adjustments

* fix: Aspect ratio is too extreme

* fix: Activity recreation

* fix merge issues

* fix merge issues

* ktlintFormat

* Add Picture in Picture

* fix

* fix sourceRectHint, updateZoomMode before entering pip

* lint

* fix: disable pip when player is locked

* lint

* lint

* fix: sourceRectHint

* fix: replace media items in mpv

* fix: don't show skip intro button in pip

* chore: remove `android:resizeableActivity` from manifest since the default is already `true`

* refactor: remove option to force 16:9 aspect ratio

* refactor: update strings

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-14 22:47:42 +02:00
Anil Kumar Beesetti
8992646090
refactor: use WindowInsetsControllerCompat instead of deprecated methods (#302)
* refactor: remove deprecated methods to hide system ui

* fix: action bar reappear after changing the brightness

* lint: run ktlintFormat

* refactor: remove sdk check

* fix: system bars stay visible after closing dialog

* fix: add player theme to set navigationbar and statusbar colors to transparent

* fix: draw behind navigationbar and statusbar

* refactor: remove swipeToShowStatusBars extensions

Remove fix for status bar reappearing on LineageOS after changing brightness with gesture.
This can always be added back when official Android version from manufacturers also need this fix.

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-13 22:44:34 +02:00
Jarne Demeulemeester
270f7decaa
refactor(PlayerActivity): replace livedata with UiState StateFlow 2023-07-31 23:21:41 +02:00
Jarne Demeulemeester
7a3b67f64b
fix(player): playback position reset on process death and playback continues playing when the device is locked
Closes #389 #390
2023-07-09 15:15:15 +02:00
Cd16d
7932216105
fix: configureInsets() for lockedControls, volume progress bar smoothness, gesture not working if the player was locked (#408)
* fix: volume progress bar smoothness

* fix: configureInsets() for lockedControls

* fix: gesture not working if the player was locked and used back gesture
2023-06-24 16:34:33 +02:00
Jarne Demeulemeester
b426a920c3
lint: run ktlintFormat 2023-06-19 23:44:42 +02:00
004matteos
a886baf907
feat: lock player controls (#372)
* feat: lock player controls

Add Lock Player feature.

This feature is similar to the feature found in the stock Jellyfin Android app and in the VLC app.

When enabled, it disables the gestures (seek, volume and brightness control), disables the default player controls and leaves only two buttons: a back button and an "unlock" button.
Pressing the unlock button reverts the player back to the initial state, e.g. gestures enabled and default buttons shown.

Works with ExoPlayer and MPV Player.

Let me know of any issues.

* Update PlayerGestureHelper.kt

* Fixed spacing issues

* fixed bug + formatting

* Simplified code

* Fixed spacing

* fixed trailing line?

* refactor: set locked layout initial visibility in xml

---------

Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2023-05-25 09:20:30 +02:00
renovate[bot]
22542614cd
chore(deps): update android-plugin to v8 (major) (#333)
* Update android-plugin to v8

* ci: upgrade to java 17

* fix: transitive R classes and buildconfig

* lint: fix ktlint issues

* lint: fix ktlint issues

* lint: fix ktlint issues

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2023-04-15 00:43:42 +02:00
Faywyrr
01d8c11a2c
feat: scrubbing preview (#295)
* Scrubbing Preview

Add Jellyscrub plugin support

* Fix syntax

* Some adjustments

Rounded corners
Fix switch

* refactor: switch to `StateFlow`

* refactor: remove `FrameLayout`

* refactor: move trick play retrieval to `onMediaItemTransition`

Only load trick play data for current item
Make it async

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-21 19:46:00 +01:00
js6pak
31fd1e3fdc
Add intro skipper support (#219)
* Add intro skipper support

* Fix checking for 404

* Add back missing Intro class and dependencies due to rebase

* Add preference

* Clean up visibility logic

* Update skip intro button design

* Add proguard file to keep Serializable classes

* Move introCheck to a separate Runnable and fix Runnables are never cleaned up

* Simplify check before starting runnable

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-01-15 15:20:56 +01:00
Jarne Demeulemeester
76121925d7
Modularize the codebase (#230)
* Split app into core and app:phone

* Use global versionCode and versionName

* Clean up gradle dependencies

* Use string formatting inside getString function

* Move proguard file to app:phone

* Move app_navigation and BasePlayerActivity to app:phone

* Add buildTypes to core gradle and remove buildFeatures

* Add suffix core to core namespace

* Split code into 4 more modules: data, preferences, player:core and player:video

* Clean up some gradle files

* Clean up data gradle

* Remove duplicate Constants.kt

* Use AppPreferences in more places

* Split off strings

* Remove unused animations

* Make about_libraries strings non-translatable

* Move mpv assets to player:video module

* Make AppPreferences a Singleton
2023-01-13 23:51:20 +01:00
Renamed from app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt (Browse further)