Commit graph

741 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
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
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
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
8dc0be4a52
all: cleanup 2024-01-21 20:01:26 -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
bd240f967e
playback: reimplement state saving 2024-01-13 18:34:17 -07:00
Alexander Capehart
6a0fd76636
music: fix selector error with malformed folders
Forgot that i is not a good indicator of if we need to begin a selector
or not since we may discard certain music folders.
2024-01-09 13:50:47 -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
5c85001b0c
music: add opus base gain support
OPUS has another volume adjustment field on top of the existing R128
adjustments. I was under the impression this was handled by the android
system, but apparently not. This commit applies the base gain to files
by just adding them onto the existing ReplayGain values.

Resolves #521.
2024-01-06 18:26:53 -07:00
Alexander Capehart
c4143e7d95
music: log when volume cannot be found
Mostly for debugging purposes.
2024-01-05 12:36:51 -07:00
Alexander Capehart
3202660449
music: add check to playlist export dialog 2024-01-03 18:51:29 -07:00
Alexander Capehart
2b55caadd1
home: fix more speed dial touch problems
Handle back presses gracefully without finicky behavior when doing back
gestures.

I've spent far too much time trying to make this sensible. I'm going to
take a break.
2024-01-02 17:19:10 -07:00
Alexander Capehart
e500286b8b
music: support paths in documents
Apprently these only report their IDs, frustratingly.
2024-01-01 21:38:21 -07:00
Alexander Capehart
32432b18b6
music: fix m3u windows volume detection 2024-01-01 21:36:46 -07:00
Alexander Capehart
0675ce8a03
music: rename playlist when reimporting
When reimporting an M3U file into a playlist, if the name differs, then
initiate a rename dialog so the user has a choice on whether they want
to use the new name or not.

This does kinda desecrate the "Rename" decision a bit, but it's still
to the user the same.
2024-01-01 20:21:39 -07:00
Alexander Capehart
9ad11ec5aa
music: allow renaming playlist before import
When you import a playlist, Auxio will now always display the
"New Playlist" dialog so you can change whatever name Auxio has picked
for the imported playlist.

This also prevents the creation of two playlists with the same names.
2024-01-01 16:12:01 -07:00
Alexander Capehart
68584ba426
music: fix file document path extraction
Apparently on Android 14 you need to reassemble the document URI and
then extract it's ID to get a path object. Really not sure why.
2024-01-01 16:10:11 -07:00
Alexander Capehart
bf9667f545
music: fix working directory in m3u export 2024-01-01 16:07:50 -07:00
Alexander Capehart
53870cd31b
music: fix reloads not cancelling prior ones
Caused by a dumb mistake in the cancellation code.
2024-01-01 14:36:26 -07:00
Alexander Capehart
574e129f34
music: cleanup and document 2024-01-01 14:08:47 -07:00
Alexander Capehart
538533bf3f
music: discard songs w/o volumes 2024-01-01 13:38:26 -07:00
Alexander Capehart
4a3beafc77
music: indicate volume components checked 2024-01-01 12:52:01 -07:00
Alexander Capehart
17939f6b2a
music: correctly propagate error 2024-01-01 12:36:08 -07:00
Alexander Capehart
b10caaef54
music: more path interpreter guards 2024-01-01 12:25:49 -07:00
Alexander Capehart
ed519eeccc
music: refine new mediastoreextractor impl
- Make the interpreters use a more conventional naming structure
- Remove the redundant file name extraction that is largely an artifact
of older versions
2024-01-01 12:02:38 -07:00
Alexander Capehart
6b9f6862af
music: correctly parse data with new paths
Accidental regression appeared due to inconsistent trailing slashes, so
we need to reimplement this using the path datatype itself.
2024-01-01 12:02:38 -07:00
Alexander Capehart
2af8d8b4bd
music: remove old deadlock check
No longer needed and likely causing bugs
2024-01-01 10:06:36 -07:00
Alexander Capehart
c7f8b3ca6d
music: refactor mediastoreextractor internals
Split the version-specific components into "Interpreters" that are then
composed into MediaStoreExtractor. This is both a nicer design and also
allows me to resolve an evil Huawei bug that prevents me from using the
new path fields.

Resolves #592
2023-12-31 23:34:00 -07:00
Alexander Capehart
6956ca5915
music: fix m3u windows path importing
Forgot that Regex always matches the entire string, so I have to tack
on a wildcard.
2023-12-24 11:35:59 -07:00
Alexander Capehart
480b1b28e5
music: display correct message on new playlist
The context of the "New Playlist" dialog can differ depending on the
action performed, such as adding to a playlist or importing a playlist.
We need to make sure we're still showing the right message once this
is done.
2023-12-24 11:34:55 -07:00
Alexander Capehart
c5a3f72b99
music: add more playlist messages
Add more types of playlist messages corresponding to other actions, so
they can be indicated in the UI only when the process is complete.

This is somewhat incomplete. It does not include indicating errors for
other playlist operations (Which I want to do), and neither does it
handle situations in which some playlist operations and up reducing
to others (i.e import -> create). I need to do that later.
2023-12-23 22:02:55 -07:00
Alexander Capehart
21970349cc
music: add ability to import into playlists
Add a menu option that allows you to import a playlist file into an
existing playlist.

This is useful for keeping Auxio playlists up to date with a remote
source.
2023-12-23 20:50:40 -07:00
Alexander Capehart
3f1f2f5c2d
music: implement exporting frontend
Implement the exporting dialog and flow in all places in the app.
2023-12-23 12:16:02 -07:00
Alexander Capehart
68e4da5e7e
music: make playlist export configurable
Add configuration options for:
- Using windows-compatible paths with \ separators and C:\\ volume
prefixes
- Switching between relative and absolute paths
2023-12-23 12:12:51 -07:00
Alexander Capehart
c3f67d4dc5
music: fix m3u export
Wasn't correctly writing and also naively relative-izing paths. Those
should be fixed now, I hope.
2023-12-21 20:59:19 -07:00
Alexander Capehart
d59230be6d
music: re-add missing file 2023-12-20 22:53:08 -07:00
Alexander Capehart
771009d4ff
music: add m3u exporting backend
Add the backend for exporting playlists to m3u files.
2023-12-20 22:49:02 -07:00
Alexander Capehart
c995eb0d04
music: support m3u absolute paths
Under the assumption they are in the same volume as the file. It's
hacky, but whatever.
2023-12-20 13:32:13 -07:00
Alexander Capehart
c66a9b19b5
music: more m3u support
- Turns out path extraction via MediaStore doesn't work, have to grok
the URI format.
- Added playlist name extraction
- Proactively handling whitespace
2023-12-20 13:28:36 -07:00
Alexander Capehart
634ff0d823
home: add playlist import flow
Connect the playlist importing system to the home view's playlist add
button.
2023-12-20 13:28:20 -07:00
Alexander Capehart
2195431c66
music: dont inject contentresolver
I don't know why, but I can't inject it without causing errors.
2023-12-20 12:12:40 -07:00
Alexander Capehart
e553744c8e
music: rename import to external
Apparently hilt doesn't like a module with the name import, probably
because of a keyword conflict.
2023-12-20 11:59:48 -07:00