Alexander Capehart
4f71dba90e
playback: fix various android auto issues
...
- Broken queue
- Unusable item details
2024-06-09 19:43:08 -06:00
Alexander Capehart
a9e7ae398c
playback: fix service memory leak
2024-06-09 16:52:27 -06:00
Alexander Capehart
cff700231e
playback: fix android auto queue crash
2024-06-09 16:52:16 -06:00
Alexander Capehart
dbe7bdf1c3
music: fix m3u volume processing
2024-06-09 16:50:31 -06:00
Alexander Capehart
d117f16081
image: prefer exoplayer over aosp covers
...
Will actually handle files with multiple covers. Could lead to more
performance concerns, but that's also the same with AOSP too.
2024-06-09 13:13:54 -06:00
Alexander Capehart
b0703b4d0e
playback: fix widget not resetting on service end
2024-06-08 21:44:48 -06:00
Alexander Capehart
111cb9688f
tasker: completely remove
2024-06-08 21:44:15 -06:00
Alexander Capehart
643defd9e4
playback: fix play song by itself
...
Accidental misup led to it playing from all songs instead
2024-06-08 19:21:06 -06:00
Alexander Capehart
d906b87d76
all: reformat
2024-06-08 19:20:18 -06:00
Alexander Capehart
8b2634df4d
music: handle total absolute m3u paths
...
Some players like generating M3Us with paths starting with
/storage/.../..., so I need to handle those too.
2024-06-08 15:06:04 -06:00
Alexander Capehart
c4a3d52903
playback: fix skip backward rewind w/enabled
...
New player setup accidentally broke rewind at beginning behavior when
rewind before skip is off.
Resolves #785
2024-06-08 12:22:08 -06:00
Alexander Capehart
1c74f05222
all: fixes/reformat
2024-06-08 11:58:18 -06:00
Alexander Capehart
27e39b6c10
music: interpret m3u paths as relative & absolute
...
Resolves #673
2024-05-26 21:51:12 -06:00
Alexander Capehart
0f691ee65b
tasker: remove
...
Can't do this right now, lifecycle is broken.
2024-05-18 17:35:04 -06:00
Alexander Capehart
b955e2f3ab
playback: re-add notif content intent
2024-05-18 11:35:30 -06:00
Alexander Capehart
3a24116b53
about: remove yrliet sponsor
2024-05-17 22:05:17 -06:00
Alexander Capehart
51309ebabb
tasker: plugin tweaks
2024-05-17 21:07:41 -06:00
Alexander Capehart
d21a7eee93
playback: more coherent notif action setup
2024-05-17 19:32:03 -06:00
Alexander Capehart
e1e1e63dbb
playback: basic tasker plugin
...
No idea if this works. Should be helpful for testing more service
independence stuff.
2024-05-17 19:02:08 -06:00
Alexander Capehart
8e5d061af5
playback: re-add old swap move
...
Turns out this did have a reason to exist, ExoPlayer doesn't have intrinsic
capabilities to update the shuffle order on moves.
2024-05-17 16:18:39 -06:00
Alexander Capehart
66db61899c
playback: remove custom bitmap loading
...
Media3 simply will not tolerate me doing this. I am basically stuck
at the mercy of the Android OS now, until I can have my own unified
source of truth with cover loading.
2024-05-17 15:38:12 -06:00
Alexander Capehart
aec08bb48b
all: reformat/fixes
2024-04-22 10:46:44 -06:00
Alexander Capehart
a4838cefaa
image: properly differentiate cover types
...
- If we could find an embedded cover, then we can treat it as a
per-song cover
- Otherwise, just do our old album-based behavior.
2024-04-22 10:44:03 -06:00
Alexander Capehart
e687658874
image: properly handle uniqueness of non-embedded covers
...
Use a UID instead. This is non-ideal but all we can do.
2024-04-22 08:36:59 -06:00
Alexander Capehart
657b8267f1
list: clamp item drag speed
...
Resolves #686
2024-04-20 14:56:45 -06:00
Alexander Capehart
51406deaa7
image: complete per-song album covers
...
- Implement perceptual hashing algorithm to efficiently cache images
- Efficiently pre-sort cover sources to make cover images load without
freezing and look more pleasing
Resolbes #342 .
2024-04-20 14:31:38 -06:00
Alexander Capehart
bd330f0c71
image: basic per-song album covers
...
Without any good caching support, so this will immediately break down.
2024-04-19 22:16:50 -06:00
Alexander Capehart
8b7b916489
playback: fix notif issues on older devices
...
- Slight coroutine delay in cover fetch causes the notif to flicker
- Default play/pause actions look absolutely hideous
2024-04-19 19:08:30 -06:00
Alexander Capehart
b99cd96726
playback: fix task removal
2024-04-19 16:08:37 -06:00
Alexander Capehart
f04e05ad50
playback: immediately ack index moves
...
Handling them later in the callback is no longer needed now that we have
the MediaSession shim, and it caused desyncs in ReplayGain support.
2024-04-17 19:50:44 -06:00
Alexander Capehart
a3e74cbd1e
music: update search results when library changes
2024-04-14 12:59:31 -06:00
Alexander Capehart
c8571a4df3
playback: fix broken play actions
2024-04-14 12:16:38 -06:00
Alexander Capehart
02b7acd1c5
music: update search results as well
2024-04-14 12:15:16 -06:00
Alexander Capehart
583e984c70
playback: hide exoholder save impl
2024-04-12 14:04:51 -06:00
Alexander Capehart
aac39b771d
music: sort mediaitems sent in browser
2024-04-12 14:04:28 -06:00
Alexander Capehart
07b17caf8f
music: fix mediaitem library update logic
2024-04-12 13:58:53 -06:00
Alexander Capehart
3a4ddb43b9
service: handle non-native start
...
Restore the state by default when another app starts the service.
A simple first step to ensure service independence (no clue if it's
enough)
2024-04-12 13:57:11 -06:00
Alexander Capehart
be23208f72
service: break into components
2024-04-11 23:48:45 -06:00
Alexander Capehart
24097af28c
playback: cleanup
2024-04-11 15:09:44 -06:00
Alexander Capehart
0ca928a477
playback: tweak media3 command surface
2024-04-11 15:09:25 -06:00
Alexander Capehart
fb15791c2f
playback: backfill
...
Forgot to add these to other commits
2024-04-11 15:09:00 -06:00
Alexander Capehart
33916deb5c
playback: remove joined uids from parents
...
Not needed.
2024-04-11 15:08:34 -06:00
Alexander Capehart
3b14c35c2d
music: fix mediaitem pagination
2024-04-11 15:07:36 -06:00
Alexander Capehart
43a8041d0a
build: update media to 1.3.1
2024-04-11 15:06:55 -06:00
Alexander Capehart
1e0c7cebcf
service: fix search endlessly loading
2024-04-11 14:37:57 -06:00
Alexander Capehart
9b09572382
playback: properly play media items from command
...
By default it actually routes them to add them
2024-04-11 14:36:56 -06:00
Alexander Capehart
1f9f62b0da
playback: fix wraparound with repeat once
2024-04-10 19:48:28 -06:00
Alexander Capehart
bd890880a3
playback: restore repeat modes again
2024-04-10 19:47:56 -06:00
Alexander Capehart
74551e83ab
playback: fix being unable to exit fg
2024-04-10 19:30:49 -06:00
Alexander Capehart
99a527983b
service: break up
...
Break up the monster AuxioService into sub-classes, keeping just the
major lifecycle and music stuff in AuxioService for now (which will
likely be split out itself eventually)
2024-04-10 19:18:04 -06:00
Alexander Capehart
5b8518a567
playback: move most ops to player
...
This allows me to handle foreign MediaItem events easily. Not tested,
don't have time.
2024-04-10 10:05:20 -06:00
Alexander Capehart
05101c0e08
service: implement onGetItem
...
Should round out the rest of the MediaSession interface I need. Now
just have to hook up to Android Auto.
2024-04-09 22:44:30 -06:00
Alexander Capehart
48275c4698
service: add search functionality
...
I cannot tell if this actually works yet.
2024-04-09 22:28:32 -06:00
Alexander Capehart
e9a4b99aa5
service: dead code removal
2024-04-09 15:35:36 -06:00
Alexander Capehart
62d3c2dfb1
service: unify foreground management
2024-04-09 15:27:56 -06:00
Alexander Capehart
7503accada
playback: handle media item playback
2024-04-09 15:17:24 -06:00
Alexander Capehart
64b9557793
playback: always enable skipping
2024-04-08 21:15:15 -06:00
Alexander Capehart
08e00c7fb1
playback: use custom service lifecycle
2024-04-08 21:15:04 -06:00
Alexander Capehart
04ea6834fb
playback: rearchitecture around media3 (prototype)
...
Nowhere near complete in any capacity.
2024-04-07 23:25:53 -06:00
Alexander Capehart
da07be26f4
playback: re-add replaygain off mode
...
It was honestly foolish for me to recommend retagging.
Resolves #746 .
2024-04-07 23:25:53 -06:00
Alexander Capehart
dc51c84c54
home: handle playback decision event
...
Forgot to add this.
Resolves #734 .
2024-04-07 23:25:53 -06:00
unrenowned
b075f8ec51
playback: fix playNext wraparound with Repeat All
...
ExoPlayer method for fetching next media item respects Repeat All, which
on the last song of a queue causes playNext to wrap around and insert
the songs at the start of the queue. New code fetches next song as if
repeat were turned off, so the songs will always be added to the end of
the queue.
2024-04-07 23:25:53 -06:00
unrenowned
e0352a105a
playback: fix playNext crash on last song of queue
...
Fixes OxygenCobalt/Auxio#735 . ExoPlayer method for fetching next media
item returns C.INDEX_UNSET (-1) when used on the last song of a queue,
which is not a valid index for ExoPlayer.addMediaItems(). New code just
adds songs to the end of the queue if there isn't a next song.
2024-04-07 23:25:53 -06:00
Alexander Capehart
8221e98401
playback: fix add to queue again
2024-04-07 23:25:53 -06:00
Alexander Capehart
f5bc31a00f
home: fix crash on music updates
2024-04-07 23:25:53 -06:00
Alexander Capehart
2a0624f860
playback: fix more state restore issues
...
They just keep coming. I hate how complicated this system is.
2024-04-07 23:25:53 -06:00
Alexander Capehart
6d6b1665e5
all: reformat
2024-04-07 23:25:52 -06:00
Alexander Capehart
3ca9b515cf
widget: fix wafer cover setup
...
Apparently:
1. Some OEMs don't actually autocrop to rounded corners
2. I was not correctly using the right corner radius attributes in the
first place, making it inconsistent.
Let's fix that.
Closes #730
2024-04-07 23:25:52 -06:00
Alexander Capehart
dbfe9927bf
playback: fix broken state restore
...
That didn't properly handle when the index was invalid and kept stale
song entries.
Resolves #723 .
2024-04-07 23:25:52 -06:00
Alexander Capehart
b6f89de88d
playback: fix crash w/add to queue
...
Again, a two-fold problem:
- Was not properly giving the right StateAck to the state holder
- ShuffleOrder not properly handling the index given when adding to
queue internally
Resolves #727 .
2024-04-07 23:25:52 -06:00
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
6a76a55060
music: bump cache db version
2024-02-24 14:38:21 -07:00
Alexander Capehart
3a04bef074
all: reformat
2024-02-24 13:28:49 -07:00
Alexander Capehart
5efdfb6aac
home: make sure to avoid touch overlay crash
...
Only configure the touch overlay when the fragment resumes, and don't
do any weird post stuff.
2024-02-24 13:27:52 -07:00
Alexander Capehart
a036005f75
playback: fix broken state restore
2024-02-24 12:37:49 -07:00
Alexander Capehart
07a98029c6
music: fix opus replaygain interpretation
...
- Don't parse the base gain, the media player actually does apply it.
- Adjust R128 tags to LUFS -18 to be consistent w/MP3.
Resolves #521 .
2024-02-20 11:12:24 -07:00
Alexander Capehart
f3261ded43
about: add yrliet to supporters
2024-02-17 14:35:04 -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
eb3c320523
home: move speed dial touch setup to onStart
...
If we don't do this, the views won't be there and the app will crash
in some circumstances.
Resolves #701 .
2024-02-17 12:13:07 -07:00
Alexander Capehart
6730766504
music: increase music load timeout
...
TagExtractor can take longer than 10 seconds to load, increase it to 60
seconds.
2024-01-28 21:38:45 -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
881df0fc02
widgets: add 1x3/1x4 widget
...
Add a 1x3/1x4 widget that displays the cover and controls
Also requires another widget type that just displays controls to
accomodate landscape devices.
Resolves #420 .
2024-01-15 20:49:35 -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
07acb4f5b9
music: fix data selector creation
...
More or less, the paths being selected for were extremely malformed,
stuff like storage/emulated/0Music. This completely broke music folders
below API 29.
2024-01-14 11:00:52 -07:00
Alexander Capehart
f1a6b77d30
music: fix other music loading failure from dirs
...
Turns out there are two ways the selector can go malformed. One was the
complicated issue where you can't resolve a directory, the other was me
*missing a character* and not even building the selector right.
2024-01-14 09:55:43 -07:00
Alexander Capehart
4234f5b8f1
music: update cache db
2024-01-13 22:23:42 -07:00
Alexander Capehart
b4833918cf
music: fix opus base gain extraction
...
I have no idea how it ended up this mangled.
2024-01-13 22:16:13 -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