Commit graph

839 commits

Author SHA1 Message Date
Alexander Capehart
86b7ef8d5c
music: fix crash on playlist add
Caused by the new state restoration code being bugged and applying on
playlist changes, then combined with the playlist code not properly
switching to the main context when dispatching a library update.
2024-04-07 23:25:52 -06:00
Alexander Capehart
22a22a883f
service: unify playback and indexer
Playback and indexing now occur in the same service through a new
bridge called AuxioService.

AuxioService contains the existing service instances as Fragment
implementations, and then forwards typical service events to them
(albeit this will drift more and more as I continue to deal with
lifecycle issues).

This should be the first step in enabling true service independence,
as it means that the service will now immediately initialize and load
music as soon as possible.
2024-04-07 23:25:52 -06:00
Alexander Capehart
b2a6d40252
playback: cleanup 2024-02-24 14:47:55 -07:00
Alexander Capehart
a036005f75
playback: fix broken state restore 2024-02-24 12:37:49 -07:00
Alexander Capehart
23d561cc44
playback: save when service closes
This time, actually wait for the save to complete before stopping the
foreground state. This requires some checks to make sure that we don't
have any "randomly smashing on buttons" errors, but I'm unsure if that
will be enough.

The last case in which this becomes an issue is when the service
is killed outright. I can't do much here to make the state more sane
unless I did some playback position monitoring.
2024-02-17 14:00:12 -07:00
Alexander Capehart
ced462e718
playback: dont apply state mirror w/no song
Otherwise, the StateHolder will crash.
2024-01-28 21:38:45 -07:00
Alexander Capehart
8dc0be4a52
all: cleanup 2024-01-21 20:01:26 -07:00
Alexander Capehart
b53a96f574
playback: fix crash when song cannot be restored
The index is -1, which is not a valid position to seek through
normally. In this case we should just ignore it.
2024-01-21 19:33:49 -07:00
Alexander Capehart
e6141b12e6
playback: fix state restore
Wasn't using the corrected shuffle mapping
2024-01-16 13:25:03 -07:00
Alexander Capehart
ec61ba50ec
playback: re-add semi-circular queue w/no repeat 2024-01-16 12:48:32 -07:00
Alexander Capehart
3e79f31792
playback: add remember pause setting
This setting allows you to remain playing/paused when you move in the
queue or edit the queue. Useful for some people who like this behavior
more than always playing.

Resolves #568.
2024-01-15 16:45:44 -07:00
Alexander Capehart
a44f0bce35
playback: stop playback on task removal if paused
This is apparently the standard behavior that media apps should use to
allow the foreground state to be exited. I personally don't want to
make it really unilateral like that, so if playback is already ongoing
I'll keep the foreground state going.
2024-01-15 16:25:42 -07:00
Alexander Capehart
1766283cd2
playback: save playback state on every change
Prior, I was saving when the service was closed, which is a stupid
decision and caused a lot of unreliability.

Resolves #404.
2024-01-15 16:19:27 -07:00
Alexander Capehart
b2d9b244e5
playback: redocument/refactor gapless playback
Should complete this feature, save regression fixes.

Resolves #110.
2024-01-15 16:02:47 -07:00
Alexander Capehart
48ab83f6de
playback: handle deferred action on startup
Dropped this when I ripped out the code prior.
2024-01-15 16:01:53 -07:00
Alexander Capehart
68443dc337
Merge branch 'dev' into gapless-playback 2024-01-14 12:12:49 -07:00
Alexander Capehart
3267ae98be
playback: readd service reinit
Make sure the service is properly re-initialized when it dies and is
then restarted.
2024-01-13 20:43:51 -07:00
Alexander Capehart
f525abdba3
playback: fix marquee on playback screen 2024-01-13 20:28:34 -07:00
Alexander Capehart
b2d71f8903
playback: reattach settings to player
It's mostly identical to prior, albiet pausing on repeat now leaves the
player position at the end of the song rather than the beginning.
That's the only regression I couldn't figure out how to resolve.
2024-01-13 20:26:02 -07:00
Alexander Capehart
bd240f967e
playback: reimplement state saving 2024-01-13 18:34:17 -07:00
Alexander Capehart
1d63ad5b7b
playback: mirror state internally
Mirror the last playback state of the holder inside
PlaybackStateManager.

This is generally more efficient and will enable better handling of
when state holders attach and detach.
2024-01-09 15:04:32 -07:00
Alexander Capehart
d5622895d0
playback: fix more gapless issues 2024-01-09 13:49:00 -07:00
Alexander Capehart
26d14ec6e1
playback: ramshack initial gapless playback impl 2024-01-07 16:05:03 -07:00
Alexander Capehart
5d5356e46e
all: cleanup 2024-01-06 21:02:40 -07:00
Alexander Capehart
319eeb07b8
playback: add shuffle order impl
Add a currently-unused ShuffleOrder implementation with fixes for media
item insertion.

This will be used as the basis of the new gapless playback system,
assuming all else goes well.
2024-01-06 20:53:08 -07:00
Alexander Capehart
2af90c2427
detail: add replaygain values to song properties
This should allow for clearer debugging.
2024-01-06 18:46:13 -07:00
Alexander Capehart
4cb309f01f
playback: eliminate old viewpager stuff 2023-12-16 17:49:41 -07:00
Alexander Capehart
b0dd13b9a3
Merge branch 'dev' into feature/cover_gestures 2023-12-17 00:30:33 +00:00
Alexander Capehart
cd42c77304
playback: use ffmpeg first
Always decode with ffmpeg before decoding with MediaCodec.

MediaCodec is unreliable on some devices in such a way as to cause a
full loading failure on them. Prevent this by using ffmpeg.
2023-12-16 16:33:54 -07:00
Alexander Capehart
7fef5a27da
Revert "playback: temp revert swipe to next behavior"
This reverts commit df7ec27d1c.
2023-11-12 11:05:14 -07:00
Alexander Capehart
df7ec27d1c
playback: temp revert swipe to next behavior
It's too buggy to be in a release currently, I have to disable it for
now.
2023-11-12 10:00:41 -07:00
Alexander Capehart
d926e19819
all: cleanup 2023-11-11 23:22:46 -07:00
Alexander Capehart
94e2c3c3e4
playback: further pager cleanup
- Use Replace instead of Diff for now since that avoids the scroll
state freaking out. In practice I'll likely need to radically refactor
this system (AGAIN...) to make the queue updates 100% fine-grained,
even during shuffling.
- Remove the behaivor of staying paused on the next track. That's
covered by #568.
2023-10-16 21:33:53 -06:00
Alexander Capehart
2fe0f3e7d8
playback: partially build back pager impl 2023-10-16 20:45:13 -06:00
Alexander Capehart
d51da1b4bf
playback: export playback reciever
Completely misunderstood how this would affect the widget/notification
on Android 14. Apparently it just blocks all intents, even if they are
tangentially from the app.

Resolves #598.
2023-10-16 20:31:53 -06:00
Alexander Capehart
b3ef43b37e
playback: start cleaning up pager impl
Fix some immediate compile issues and some style nitpicks. This breaks
the system a bit, but I don't think I will have enough time to debug
fully for the forseeable future, so I want to get this out now.
2023-08-22 07:29:06 -06:00
Alexander Capehart
a1abcd7aac
Merge branch 'dev' into feature/cover_carousel 2023-08-21 07:50:23 -06:00
Alexander Capehart
9a67a0d539
util: use timber for logging
This will make testing app components a lot easier since it removes the
logging dependency used in most shared objects.
2023-08-18 15:55:20 -06:00
Alexander Capehart
d0b34a14e4
playback: fix broken item navigation
Caused yet again by sharing StateFlows leading to a strange
out-of-order collector notification, which then allows detail
fragments to consume item navigation requests before the playback
panel can even get them. SharedFlow doesn't help here, so we are
just forced to move this to MainFragment which does not have this
issue for some reason.
2023-08-17 20:43:39 -06:00
Alexander Capehart
151b69bedb
list: add selection menu
Add a menu dialog for selections. This more or less completes the
bottom sheet menu functionality.

Resolves #454.
2023-08-03 11:52:43 -06:00
Alexander Capehart
c838813434
Merge branch 'dev' into feature/cover_carousel 2023-07-28 10:19:47 -06:00
Alexander Capehart
6d342325ea
list: open menu dialogs from toolbars
Make it so that toolbars now open menu dialogs as items do.

This excludes the selection menu currently since there's no dialog for
such.
2023-07-28 08:44:31 -06:00
Alexander Capehart
6ac757b952
list: move sort settings to module
Move sort settings from music -> list, since they're probably better
there anyway.
2023-07-25 21:01:54 -06:00
Alexander Capehart
d6d1071535
all: cleanup
Routine code inspection and cleanup, this time with the new lints from
android studio giraffe.
2023-07-25 20:45:30 -06:00
Alexander Capehart
68a9ce7b09
build: update deps
I didn't fully keep track of what I did this time, mostly since I was
busy wrangling some of the insane build issues from this gradle update.
2023-07-25 14:35:26 -06:00
Koitharu
a341281548
Open menu by tap on cover 2023-07-14 11:16:42 +03:00
Koitharu
22db781c0b
Do not start playing after switching tracks by swype 2023-07-14 11:16:41 +03:00
Koitharu
69de9d6f2f
Full song info pager on playback screen 2023-07-14 11:16:32 +03:00
Alexander Capehart
18d9c0adf0
ui: further tweak bottom sheet
Switch back to the default MDC-provided animations, just without the
ugly alpha change, and fix any auxillary issues that come with that.
2023-07-12 09:59:53 -06:00
Alexander Capehart
32a0d97e5d
list: add ability to play/shuffle songs in menu
Add play and shuffle options for all song menus.

These will override the shuffle state, unlike other song play
interactions.

This required a good bit of refactoring to menu, some of which
might be ported to other commands in future changes.
2023-07-11 15:09:30 -06:00