Commit graph

312 commits

Author SHA1 Message Date
Alexander Capehart
1826ae3215
deps: update to mdc 1.8.0-alpha01
FINALLY update to MDC 1.7.0. After over half a year.

I have been continually blocked by doing this due to this absurd ripple
bug that was so continually frustrating. Today, I finally figred out
how to hack a fix in by using R E F L E C T I O N and manually
disabling the bugged code path since google apparently can't be bothered
to fix it.

Now, you might wonder why I didn't update to 1.8.0. That is because
there is ANOTHER RIPPLE BUG. THIS TIME WITH THE TAB LAYOUT. AND ONLY IF
IT'S IN A COLLAPSING TOOLBAR LAYOUT. Can't wait to finally use the new
1.8.0 features in December!
2023-02-12 21:45:47 -07:00
Alexander Capehart
dd2017c510
image: use di w/coil
Use dependency injection with Coil.

This allows me to use the coil-base artifact which should remove a bit
of superfluous dexcode, assuming dagger uses less. It probably doesn't.
2023-02-12 19:07:00 -07:00
Alexander Capehart
ccbd77918b
all: add di framework
Add dagger/hilt dependency injection.

Does nothing right now, will actually add modules later.
2023-01-29 19:55:53 -07:00
Alexander Capehart
2413edfd5e
deps: update to java 11
Update to Java 11 instead of Java 8.

Seems to work fine.
2023-01-29 17:58:41 -07:00
Alexander Capehart
f8d1a880d4
all: post-refactor cleanup 2023-01-29 17:45:51 -07:00
Alexander Capehart
f27215a4be
playback: use room for persistence
Finally give up and use Room to persist the playback state.

This should make dependency injection much easier, and the
implementation isn't exactly the *worst*, as I was already using
"raw" data structures for the old queue database.
2023-01-23 12:45:55 -07:00
Alexander Capehart
691eed344e
release: bump to 3.0.2
Bump the app version to 3.0.2 (26).
2023-01-21 16:03:30 -07:00
Alexander Capehart
90843918d6
settings: use manual nav graph
Manually use our own navigation graph in the new settings view.

This avoids a crash that occurs with the default preferences navigation
(on some devices) where the differing app IDs between debug and release
makes it so that the fragments cannot be found. Because you know.
Android.
2023-01-20 18:38:10 -07:00
Alexander Capehart
78e3739a68
testing: add unit test framework
Add junit/espresso alongside a few basic tests.

I am nowhere near close to being "done" with this at all.
2023-01-05 12:27:37 -07:00
Alexander Capehart
b3b7ed524c
release: bump to 3.0.1
Bump the version to 3.0.1 (25).
2023-01-02 19:05:57 -07:00
Alexander Capehart
affe5c482b
all: reformat code 2022-12-30 11:39:28 -07:00
Alexander Capehart
c8ef1a5661
info: update shots
Update app screenshots in preparation for 3.0.0.
2022-12-29 09:53:58 -07:00
Alexander Capehart
cce7b766d7
all: reformat code
Reformat all project code
2022-12-26 19:59:27 -07:00
Alexander Capehart
c32b31cd2e
build: upgrade deps
Kotlin -> 1.7.21
ExoPlayer -> 2.18.2
Fragment -> 1.5.5
2022-12-16 08:48:32 -07:00
Alexander Capehart
a3772b65c0
ui: re-add more button
Re-enable the more button in preparation for multi-select.
2022-11-22 10:58:41 -07:00
Alexander Capehart
086f7836bd
all: cleanup
General cleanup
2022-11-16 09:05:51 -07:00
Alexander Capehart
a7bd48b64a
Merge branch 'master' into dev 2022-11-16 08:46:23 -07:00
Alexander Capehart
6b1f3e4567
Version 2.6.4
Ready for version 2.6.4 of Auxio.
2022-11-16 08:20:37 -07:00
Alexander Capehart
42aba9e556
music: add artist count to genres
Add an artist count to genres.

This should make genres more unique from future playlists. A list of
artists will be added later on.
2022-11-12 19:18:48 -07:00
Alexander Capehart
60e54abfe9
ui: fix library updates in ui
Fix issues where the UI failed to update with library changes in the
search/home view.
2022-10-18 19:26:24 -06:00
Alexander Capehart
5e0f778daf
image: unify cover settings
Unify the "Show Covers" and "Ignore MediaStore Covers" settings under an
new "Album covers" setting.

This will make it easier to extend to new forms of album cover
collection.
2022-09-26 13:47:43 -06:00
Alexander Capehart
f3c14b81cb
all: tweak package structure
Try to tweak the package structure to be more coherent.
2022-09-25 20:24:19 -06:00
Alexander Capehart
3e73cd8080
music: add caching
Add caching of already-parsed tag data.

This greatly reduces loading times when the music library has not
changed. This completes the music loader in it's entirety now.

Resolves #207.
2022-09-25 20:02:44 -06:00
Alexander Capehart
5c76838f69
build: upgrade deps
Upgrade the dependencies I can without breaking the app:
core -> 1.9.0
activity -> 1.6.0
fragment -> 1.5.3
nav -> 2.5.2
2022-09-23 10:35:16 -06:00
Alexander Capehart
06d6495dcd
all: lint with ktlint
Just lint with ktlint. It has better import checking functionality.
2022-09-08 21:55:05 -06:00
Alexander Capehart
09823d7829
all: reformat code
Simultaniously reformat code using ktlint and ktfmt.
2022-09-08 21:04:51 -06:00
Alexander Capehart
2033e2cb1f
music: add support for id3v2.4 multi value tags
Add support for ID3v2.4-style multi-value tags separated by a null
terminator.

This temporarily removes most other forms of separator parsing in the
app. My plan is to reunify it under a new separator setting that allows
the user to select how multi-value tags are separated in their library.
Separator parsing tends to be too destructive by default, so this tends
to be a good option overall.

This commit does require ExoPlayer to be forked once again to add
ID3v2.4 separator support.
2022-09-07 21:00:24 -06:00
Alexander Capehart
48ad45e4c3
music: rework id system
Completely rework the ID system to pave the way to MusicBrainz ID
support and greatly increase ID integrity in general.

This changeset removes the old ID field, an emulation of a polynomial
hash that was used in all items, and replaces it with a new type called
UID that is specific to Music. Other types just use plain equals now,
and most instances of "id" to check for equality in the app have either
been inlined into an equals override or removed outright.

The new UID format is as follows:
datatype/format:uuid

Datatype is a tag that is just the lowercase tag name. For example,
"song". Format is the program that created the UID. auxio will be an
md5 hash, and musicbrainz will the a musicbrainz ID extracted from a
file. UUID is the uuid itself.

This is much more reliable and extendable than the old ID format. This
will also be the last time I break compat with old ID formats. From now
on, a legacy UID field will not be included to enable backwards compat,
when the time comes for a breaking change.
2022-09-06 22:21:41 -06:00
Alexander Capehart
c9422b7f9d
Version 2.6.3
Ready for version 2.6.3 of Auxio.
2022-09-03 12:48:14 -06:00
Alexander Capehart
acaf679000
ui: add animated playing indicator [#218]
Make the playing indicator animate when playback is ongoing.

Previously state issues stopped me from doing this, but apparently this
time I miraculously got it working. Yay.

Resolves #218.
2022-09-02 13:16:29 -06:00
Alexander Capehart
9fae621f7e
playback: remove needless seeking
Remove needless seek calls when setMediaItem will do.
2022-08-28 17:38:03 -06:00
Alexander Capehart
1db5e02332
Version 2.6.2
Ready for version 2.6.2 of Auxio.
2022-08-28 12:25:49 -06:00
Alexander Capehart
a2f27f303b
ui: add predictive back gesture
Rework the back pressed callbacks to support a predictive back gesture.

This completes the trivial Android 13 reworks.
2022-08-27 16:16:18 -06:00
Alexander Capehart
e90983e85d
all: android 13 cleanup
Low-hanging fruit android 13 changes.

This includes fixing some lints and adding a basic monochrome icon.
Maybe I'll improve that icon later.
2022-08-15 20:21:58 -06:00
Alexander Capehart
cafead8a88
deps: upgrade to android 13 [#129]
FINALLY upgrade to android 13.

I cannot believe it had to take until the release of the version to
finally update the SDK version, but of course it had to. For some
insane reason that I have no idea why it passed QA, the 33 SDK had
a crippling issue where attributes were not recognized. The only
way to fix this was to:

1. Upgrade to the newer studio version (Chipmunk Patch 2)
2. Upgrade to AGP 7.3.0-beta05.

Funny thing though. AGP 7.3.0 IS NOT COMPATIBLE WITH CHIPMUNK. Okay,
so we can upgrade to Dolphin then and then we can use AGP, right?
HAHAHA NOPE! Dolphin hasn't patched out the XML issue yet despite
every other release channel having a release on August 3rd. Did
some engineer at google just forget to make a release? What?

Okay, so I guess I'm forced to use Electric Eel, the UNSTABLE CANARY
VERSION that IS FILLED WITH BUGS. But oh wait, Electric Eel doesn't
like AGP 7.3.0 EITHER! It wants AGP 7.4.0, which IS ALSO IN ALPHA.
So, I'm forced to use the ALPHA studio and the ALPHA AGP version just
to use the android 13 SDK in a way that is not completely unbearable.

The android SDK, everyone.

(This is not a cry for help, I just want to write down my infinite
frustration with this stupid goose chase somewhere)
2022-08-15 19:54:37 -06:00
OxygenCobalt
b104dd151d
Version 2.6.1
Ready for version 2.6.1 of Auxio.
2022-08-10 15:30:59 -06:00
OxygenCobalt
daaa8d7f7e
Version 2.6.0
Ready for version 2.6.0 of Auxio.
2022-08-05 18:43:54 -06:00
OxygenCobalt
c888035cbd
queue: remove no position check
Remove the check for NO_POSITION when doing scrolling.

An empty list implies that we should probably scroll to the proper
item when we add data.
2022-08-04 16:23:20 -06:00
OxygenCobalt
f27b798e33
ui: remove coordinatorlayout workarounds
Remove EdgeCoordinatorLayout in favor of using fitsSystemWindows when
needed.

EdgeCoordinatorLayout was derived from a misunderstanding about how
window insets worked. Remove it.
2022-08-04 14:30:33 -06:00
OxygenCobalt
4af45031b0
all: fix lints
Fix lints that have accumulated over time.

Apparently Android Studio just...stopped using lints. For no reason. I
had to upgrade to the beta version to actually get lints.
2022-08-04 13:14:21 -06:00
OxygenCobalt
f6429a878a
build: upgrade deps
Upgrade dependencies

AGP -> 7.2.2
Activity -> 2.5.1
Fragment -> 2.5.1
Lifecycle -> 2.5.1
Navigation -> 2.5.1
2022-08-04 11:52:57 -06:00
OxygenCobalt
170cdf80ef
widgets: fix insanity
Fix two issues where Auxio's widget could not be resized to a single
cell, and another where covers would not load into the widget.

The first is caused by a random, subtle change that completely changed
up the minHeight size calculation regarding widgets. Thus, we need to
lower it for android to recognize it still as 1 cell. I cannot believe
we can't just specify the specific minimum grid size that our widget
takes up, like you know, iOS did, nearly a decade after widgets were
first added in Android.

The second is an absurd race condition stemming from me hitting the
RemoteViews memory limit. Turns out my cover bitmaps were simply too
big. Getting them below the limit requires me to resize them to a puny
~500 pixels. Why can't we just render our own views into our widget?
You know, like iOS did, nearly a decade after widgets were first added
to Android.

Nah, screw modernizing the broken widget API. Let's just vaguely copy
iOS widgets because we have to while not fixing a single issue plaguing
widget development on this OS. That way some google engineer can get
promoted faster.
2022-07-30 20:41:24 -06:00
OxygenCobalt
c3d8509069
ui: optimize bottom sheets
Desperately try to minimize the amount of layouts my bottom sheet code
is producing.

It still relayouts twice in one pass. I hate android.
2022-07-30 16:06:17 -06:00
OxygenCobalt
62ae5e5cb2
build: update build scripts
Update/Modernize build scripts.
2022-07-29 11:03:22 -06:00
OxygenCobalt
0b1f0c3cda
playback: expose queue in mediasession
Expose the queue in the MediaSession, at least I hope.

The queue is still not mutable. Don't feel comfortable implementing that
until I rework the in-app queue UI.
2022-07-25 10:39:50 -06:00
OxygenCobalt
19a0728e5b
music: rework release types [#158]
Rework album types into release types, with additional support for live
albums, remixes, and mixtapes.

This is not a complete implementation, nor is it meant to be. I don't
want to add technical complexity handling Remix Compilations or
DJ-Mixes unless there is demand.
2022-07-20 10:53:30 -06:00
OxygenCobalt
24062aa623
music: update album type display
Only display album types within the artist and album detail menus.

Displaying it elsewhere cluttered the UI somewhat.
2022-07-19 10:28:19 -06:00
OxygenCobalt
276f067152
ui: update material components
Update MDC to the alpha version in order to use some extra features.

I was planning to switch to the new MaterialSwitch, but alpha03 has
this insane crippling issue with ripples that blocks such. Use alpha02
and prep the app for the addition of the switch.
2022-07-18 10:06:26 -06:00
OxygenCobalt
d4f74784ba
music: add date class
Add a new Date class to represent both years and more fine-grained
dates extracted using the ExoPlayer metadata system.

In-app, the year is still shown, but sorting will use the new precision
when present. The MediaSession will also post an RFC 3339 formatted
date with this new precision, as the MediaSession documentation states
I should. No clue if the latter will cause any bugs with naive metadata
UIs in other apps.

Resolves #159.
2022-07-15 10:23:01 -06:00
OxygenCobalt
634fcb4273
Version 2.5.0
Ready for version 2.5.0 of Auxio.
2022-07-13 11:56:21 -06:00
OxygenCobalt
a24b4cf447
info: update screenshots
Update app screenshots for 2.5.0.
2022-07-13 10:58:20 -06:00
OxygenCobalt
60b637e1ce
all: cleanup
Semi-major code cleanup.
2022-07-11 11:29:34 -06:00
OxygenCobalt
41ff92a587
deps: upgrade
Update deps:
Kotlin -> 1.7.10
Navigation -> 2.5.0
Lifecycle -> 2.5.0
Activity -> 1.5.0
Fragment -> 1.5.0
2022-07-07 12:08:17 -06:00
OxygenCobalt
3fcd7e1a63
all: general cleanup
A bunch of changes that accumulated that I'm too lazy to split into
good commits.
2022-06-22 18:38:57 -06:00
OxygenCobalt
7edd8002f1
deps: update exoplayer to 2.18.0
Update ExoPlayer to 2.18.0 and fix all of the breaking changes.
2022-06-21 11:42:17 -06:00
OxygenCobalt
f187900d0c
Version 2.4.0
Ready for version 2.4.0 of Auxio.
2022-06-16 15:07:44 -06:00
OxygenCobalt
66b95cef42
deps: upgrade
AndroidX core -> 1.8.0
Material Components -> 1.6.1
2022-06-03 14:15:23 -06:00
OxygenCobalt
b0ec6faa33
Version 2.3.1
Ready for version 2.3.1 of Auxio.
2022-06-03 10:44:10 -06:00
OxygenCobalt
14c9bbd4f9
all: cleanup
Miscellanious clean-up.
2022-06-02 13:57:29 -06:00
OxygenCobalt
10afae0bfc
detail: fix highlighting issues
Fix two major highlighting bugs based around the janky and stupid way
I would handle highlighting previously.

Previously, I would index the views of a RecyclerView in order to
highlight viewholders. In retrospect this was a pretty bad idea,
as viewholders could be in a weird limbo state where they are bound,
but not accessible. I mean, it's in the name. It's a Recycling View.

Fortunately, google actually knew what they were doing and provided
a way to mutate viewholders at runtime using notifyItemChanged.
And the API actually makes sense! Wow! Migrate all detail adapters
to a system that uses notifyItemChanged instead of the terrible
pre-existing system.
2022-06-02 10:20:31 -06:00
OxygenCobalt
a64a4864bd
playback: fix gadgetbridge regression [#62]
Fix a regression where media button controls would no longer work
with GadgetBridge.

In 4a79de4, I assumed that my code was redundant, as there should be
some kind of reciever handling media button events already. I was
completely wrong. Re-add the reciever code (with extra checks) to
make controls work again.
2022-06-01 12:05:38 -06:00
OxygenCobalt
a65d37c421
all: switch to stateflow
Switch from LiveData to StateFlow.

While LiveData is a pretty good data storage/observer mechanism, it has
a few flaws:
- Values are always nullable in LiveData, even if you make them
non-null.
- LiveData can only be mutated on Dispatchers.Main, which frustrates
possible additions like a more fine-grained music status system.
- LiveData's perks are exclusive to ViewModels, which made coupling
with shared objects somewhat cumbersome.

StateFlow solves all of these by being a native coroutine solution with
proper android bindings. Use it instead.
2022-06-01 11:46:00 -06:00
OxygenCobalt
caaeaca494
home: rework loading screen
Move the loading screen into the home view.

Previously, we would use a Snackbar to track the music loading state.
This ended up being a pretty stupid and buggy idea, and would get even
worse with the new music loader changes. Instead, we re-implement the
loading screen into the home view to generally be more sane and
extendable compared to previously.
2022-05-29 20:07:07 -06:00
OxygenCobalt
852630ab38
Version 2.3.0
Ready for version 2.3.0 of Auxio.
2022-05-26 16:33:47 -06:00
OxygenCobalt
f34ea7f863
deps: upgrade deps
Once again
Gradle -> 7.4.2
Spotless -> 6.6.1
Ktfmt -> 0.67
2022-05-26 10:29:41 -06:00
OxygenCobalt
444e4299d6
widgets: revert most widget changes
Revert the introduction of the thin/tiny widgets, but keep the new
cover layout I created while working on them.

There is simply no way I can cram controls and metadata within the
size bucket that the thin widget occupies. I have decided to give up
and revert the widget to it's old form.

I understand why the thin widget is not appealing. However, the sizing
at which a widget can properly accomodate a taller widget is just too
precise and not really large enough to justify it's existance.
2022-05-25 11:03:59 -06:00
OxygenCobalt
059652d2f1
all: fix misc issues
Fix miscellanious issues with documentation and the playback system
2022-05-20 11:30:56 -06:00
OxygenCobalt
d296a3aed9
all: rework formatting
Do some miscellanious formatting reworks.

1. Remove all instances of m in favor of _. _ is only used when names
collide or if something should be internal.
2. Make fragments apply their own click listeners.
3. Remove instances of inc/dec and replace them with the more
straightfoward + 1 or - 1.
2022-05-11 19:03:56 -06:00
OxygenCobalt
1e7a439c31
deps: switch material to 1.6.0-rc01
Switch material components to the more stable 1.6.0-rc01. Have to deal
with android complaining, but whatever.
2022-05-01 17:54:37 -06:00
OxygenCobalt
a645c3a217
deps: upgrade deps
aaaaaaa
coil -> 2.0.0-rc03
material -> 1.7.0-alpha01
leakcanary -> 2.9.1
navigation -> 2.4.2
kotlin -> 1.6.21
agp -> 7.1.3
2022-04-29 20:14:17 -06:00
OxygenCobalt
74f5962844
ui: rework cover style
Rework the style of all album covers in the app to be more in line with
the new track number style.

This is mostly comprised of adding a new background to all cover views
and rescaling error icons to be smaller than they would normally be.
This also includes a change in the cover/track background color from
colorSurfaceVariant to colorOnSurfaceInverse, which seems to provide
the best visibility in all cases.

These changes also apply to the track number views.
2022-04-02 18:18:10 -06:00
OxygenCobalt
e387e72b2c
detail: update album song layout
Update the album song layout to be more alike to other songs.

Recently I migrated the TextView in the album songs to use 48dp sizing,
like the other song views. However, this resulted in a lot of empty
space that felt off. Fix this by adding a light background to the track
number, which fills the room it takes up a bit more. It also hopefully
primes the track number to take an indicator once multi-select is
added.
2022-03-29 20:08:57 -06:00
OxygenCobalt
595a982d59
all: cleanup
Clean up the project after the previous changes and update some
dependencies.
2022-03-23 12:27:49 -06:00
OxygenCobalt
d79592e029
all: remove databinding
Remove databinding entirely.

Databinding was a terrible idea for Auxio. I rarely leveraged it, and
when I did, it produced messy code and bloated build times. Dumpster it
for just viewbinding, which is good. This reduces building times by
nearly 2/3, and generally makes the codebase more coherent and usable.
2022-03-23 10:59:01 -06:00
OxygenCobalt
90f10f2a84
home: clean up fast scroller
Clean up the fast scroller implementation to remove dead code and
be more coherent in general.
2022-03-19 10:59:13 -06:00
OxygenCobalt
33da09a08a
all: switch to spotless
Switch to the spotless linter with ktfmt used as a backend instead of
ktlint.

This switch was done for two reasons:
1. ktfmt is more thorough than ktlint
2. License headers can be added more effectively with spotless than
the default Android Studio behavior.

Dump all of the changes now so I don't have to deal with it over a long
period of time. I don't care.
2022-03-13 17:38:19 -06:00
OxygenCobalt
627ab97948
all: cleanup
A bunch of small changes that have accrued over the last week due to
having more or less no time to work on Auxio.
2022-03-13 16:42:03 -06:00
OxygenCobalt
82247775ac
Version 2.2.2
Ready for version 2.2.2 of Auxio.
2022-03-08 16:19:02 -07:00
OxygenCobalt
1b791074ec
playback: replace headset focus with headset autoplay
Turn the headset focus setting into the headset autoplay setting.

The way auxio handles headsets is...odd. Sometimes the MediaSession
handles it and Auxio could not care less, and sometimes Auxio actually
needs to handle it. As a result, the idea of being able to disable
headset focus is more or less moot because it will only apply to some
devices and not others.

On the other end, the way Auxio automatically begins playback once a
headset is plugged in is also quite weird. It only works on wired
headsets, and when it does, it overrides all other apps that might
also be playing audio. It's not to say that it's a bad feature, but
it's also one that I don't want to make the defualt. Auxio should
still play along within the confines of Android's expectations, after
all.

Replacing the existing "Headset focus" setting with a new "Headset
autoplay" setting solves both of these issues, as it prevents a
mis-guided disabling of the setting that doesn't actually disable
the feature and it relegates the quirky autoplay behavior to an
setting not enabled by default.
2022-03-05 20:34:12 -07:00
OxygenCobalt
fc4c7714a2
deps: upgrade
Wheeeeeee
ExoPlayer -> 2.17.0
Coil -> 2.0.0-alpha09
Ktlint -> 0.44.0
2022-02-24 15:17:31 -07:00
OxygenCobalt
f5478018c5
deps: upgrade deps
Round and round
Lifecycle -> 2.4.1
Media -> 1.5.0
Navigation -> 2.4.1// TODO: Downgrade back to 2.4.1 when it is out
2022-02-19 10:13:26 -07:00
OxygenCobalt
ddc6428455
Version 2.2.1
Ready for version 2.2.1 of Auxio.
2022-02-18 19:06:00 -07:00
OxygenCobalt
4d384f4cbd
Version 2.2.0
Ready for version 2.2.0 of Auxio.
2022-02-06 19:23:54 -07:00
OxygenCobalt
bd099aee7b
deps: upgrade
Like a while loop with no escape
Navigation -> 2.5.0-alpha01 [workaround for AGP 7.1]
Preference -> 1.2.0
Fragment -> 1.4.1
2022-02-06 09:08:10 -07:00
OxygenCobalt
20245db261
style: update inter
Update the inter font to v3.19.
2022-02-05 09:23:37 -07:00
OxygenCobalt
44c53d96f3
Version 2.1.0
Ready for version 2.1.0 of Auxio.
2022-01-28 19:22:18 -07:00
OxygenCobalt
d540773664
deps: fix aar issues
Fix insane build issues with the new aar system through means that I
really don't understand.
2022-01-27 19:41:25 -07:00
OxygenCobalt
5b5aa24f5c
deps: use aar
Bundle our custom ExoPlayer components into aar instead of directly
depending on the project. This just makes things far better regarding
ease of use and reproducible builds.
2022-01-27 15:05:45 -07:00
OxygenCobalt
d7f34e6b94
all: migrate to api 32
Actually migrate to API 32 [Android 12L], co-inciding with the upgrade
of my studio install and the android gradle plugin. Alongside this, add
a bunch of fixes for lints that the new studio picked up.
2022-01-25 18:59:16 -07:00
OxygenCobalt
e4f2906767
deps: upgrade deps
Material -> 1.5.0 [Finally]
ConstraintLayout -> 2.1.3
2022-01-17 16:49:20 -07:00
OxygenCobalt
2f190f1e0b
playback: use custom exoplayer
Use a custom ExoPlayer fork with the FLAC extension enabled. This
greatly improves the listening experience, as it enables metadata
support on OGG files and FLAC files to be played below API 27.
2022-01-09 12:27:18 -07:00
OxygenCobalt
d4904136c0
search: open kb only when created
Make it so that the keyboard is only opened on the search view when
it's initially created instead of when it's loaded from the
backstack. This is just nice for overall UX.
2022-01-08 09:46:50 -07:00
OxygenCobalt
dc43edd6cb
deps: upgrate
Like a while loop with no escape.
Platform -> API 32
Coil -> 2.0.0-alpha06
2022-01-06 12:34:34 -07:00
OxygenCobalt
5a9ac4bec9
deps: upgrade
Round and round:

Coil -> 2.0.0-alpha05
Material -> 1.5.0-rc01
Kotlin -> 1.6.10
2021-12-17 14:45:40 -07:00
OxygenCobalt
2ff2cd8cf4
Version 2.0.1
Ready for version 2.0.1 of Auxio.
2021-11-26 10:27:38 -07:00
OxygenCobalt
c296321885
home: remove title gradient
Remove the title gradient. It did not work out that well actually.
2021-11-25 12:27:46 -07:00
OxygenCobalt
4ccaa7c4bb
all: cleanup code
Clean up code and fits a bunch of miscellaneous issues.
2021-11-24 20:22:30 -07:00
OxygenCobalt
0e3ffb973b
coil: completely refactor image loading
Upgrade to coil 2.0.0 and completely refactor the usage of coil to work
with the new library structure. This also fixes the issue where error
icons will just re-appear due to blocking calls. I had to add a fix on
my end and also use the new caching system in coil 2.0.0.
2021-11-20 09:00:23 -07:00
OxygenCobalt
032fd2bd40
style: use material in playback view
Use Slider and FloatingActionbutton in the playback view. This is not
because I wanted to, but because there were insane bugs on Lollipop
devices that stemmed from them being unable to load complex selector
resources.
2021-11-11 16:25:56 -07:00
OxygenCobalt
67797d957e
all: cleanup code
Upgrade dependencies, fix deprecation issues, and just clean up code
in general.
2021-11-11 12:19:07 -07:00
OxygenCobalt
0a4b07e583
playback: animate playback bar
Make the playback bar animate when it's shown at runtime. This
completes the playback bar layout and honestly it looks amazing.
2021-11-01 20:01:46 -06:00
OxygenCobalt
68782fadac
ui: create dedicated playback bar layout
Create a dedicated playback bar layout. This replaces the old janky
observer system with something that handles state better and is just
more elegant.
2021-10-30 18:21:30 -06:00
OxygenCobalt
255154c411
home: remove fab scrolling behavior
Remove the ability for the FAB to disappear on scroll, mostly because
the state would not be consistent and it was generally bad UX when
combined with the fast scroller.
2021-10-25 16:38:37 -06:00
OxygenCobalt
97808ce1c3
home: merge fast scroller
Merge the fast scroller back into Auxio once again, albeit this time
it's AFS instead of IndicatorFastScroll. This not only slims down the
implementation but also allows me to stop the scroller from appearing
every time the home view is recreated. All modifications were noted
and attribution is included to abide by the Apache 2.0 license.
2021-10-23 18:22:50 -06:00
OxygenCobalt
23d1be8ebc
home: add tab customization
Finally add tab customization. This implementation is a
bit ugly, but I had to futureproof it for playlists and I'm
planning to clean up a lot of the duplicate code across the app.

This addition notably allows a default tab to be set, which is
something that was widely requested in #12. This UI rework finally
allows it to be added.
2021-10-17 20:27:16 -06:00
OxygenCobalt
a253cfccc4
home: add fast scroller
Add a new fast-scroller to the home view. This required some annoying
hacks to work, but it seems to work pretty well.
2021-10-13 19:49:20 -06:00
OxygenCobalt
8c7f0867f9
style: migrate to Material3
Mostly migrate to Material 3/Material You.

- Auxio should now follow dynamic colors on Android 12
- Accents have been regenerated to align with the new color roles
- Some colors have been tweaked here and there to line up with the
new design system
- Dialogs were not fully migrated, but that's because Material3 dialogs
look god-awful.
- Accent class was reworked to take up less memory

Now that this is out of the way, I can focus on other UI things before
the release of 2.0.0.
2021-10-10 16:44:17 -06:00
OxygenCobalt
394327a2c4
deps: upgrade deps
constraintlayout -> 2.1.1
media -> 1.4.2
exoplayer -> 2.15.1
2021-09-29 06:43:43 -06:00
OxygenCobalt
34ac629659
strings: use bullets instead of slashes
Use bullets instead of slashes when seperating names. This is mostly
for accessibility, as screen readers will handle bullets better than
slashes.
2021-08-28 17:24:06 -06:00
OxygenCobalt
9162246b8b
home: fix appbar issues
Fix two annoying appbar issues:
- Appbar will collapse if the navigation sequence is too fast
- Tab ripple would paint over the indicator unless the ripple was unbounded [???]
2021-08-23 19:40:21 -06:00
OxygenCobalt
ad2c02936a
Version 1.4.2
Ready for version 1.4.2 of Auxio.
2021-08-21 09:38:30 -06:00
OxygenCobalt
4b438daaf2
widget: re-introduce <31 elevation
The pre-Android 12 padding option was removed previously, but I've
decided to re-add it for stylistic cohesion with the material design
of those versions.
2021-08-21 09:26:45 -06:00
OxygenCobalt
c5b1293a90
widgets: add compact/mini forms
Add two new widget forms. The compact widget form shows the cover art
[this time with a proper aspect ratio] but no controls. The mini form
only shows the metadata. This seems to work well enough and provides
more choices with how one wants to decorate their homescreen with
Auxio's widgets.
2021-08-15 11:43:22 -06:00
OxygenCobalt
fed6902c21
all: minor improvements
Add some minor UI tweaks that accumulated over this week.
2021-08-14 16:31:18 -06:00
OxygenCobalt
4cc433f7ef
style: fix style issues
Fix some style issues that came from the colorAccent reworks.
2021-08-08 14:05:44 -06:00
OxygenCobalt
64c9a4a4a7
all: add license boilerplate
Actually bother to add license boilerplate. Even though I've written
the entirety of Auxio, the boilerplate will be under "Auxio Project"
instead, as I don't want to share my real name.
2021-08-07 17:00:28 -06:00
OxygenCobalt
1b5822eae0
chore: upgrade deps
Update dependencies again:

activity -> 1.3.1
constraintlayout -> 2.1.0
media -> 1.4.1
2021-08-06 09:41:31 -06:00
OxygenCobalt
5d7d86b17e
widgets: respond to settings changes
Make it so that widgets respond to settings changes, such as
cover configuration.
2021-08-03 12:22:46 -06:00
OxygenCobalt
8551e90884
all: cleanup code
Cleanup unused resources and fix some code issues here and there.
2021-08-03 09:39:14 -06:00
OxygenCobalt
ec4ca16658
app: upgrade to android 12
Add preliminary compat for android 12 [API 31]. More changes may be
needed as time goes on, but its close enough to platform stability
to the point where its needed.
2021-07-29 10:49:18 -06:00
OxygenCobalt
cd0167405e
Version 1.4.1
Ready for version 1.4.1 of Auxio.
2021-07-29 10:02:16 -06:00
OxygenCobalt
cf67612042
chore: upgrade deps
Gradle -> 7.0.2
Android -> 7.0.0
Coil -> 1.3.0
Activity -> 1.3.0
Kotlin -> 1.5.21
2021-07-29 09:43:28 -06:00
OxygenCobalt
33332dbf6b
chore: upgrade deps
androidx activity -> 1.2.4
androidx fragment -> 1.3.5
androidx media -> 1.4.0
exoplayer -> 2.14.2
coil -> 1.3.0
2021-07-22 13:38:18 -06:00
OxygenCobalt
85081c385f
chore: upgrade dependencies
Yet another dependency upgrade churn:
Android Plugin -> 4.2.2
Material -> 1.4.0
Androidx Core -> 1.6.0

Apparently material deprecated a bunch of BottomNavigationView's stuff
for no good reason. Okay.
2021-07-12 10:43:05 -06:00
OxygenCobalt
7b5e817d3b
all: cleanup code
Cleanup the codebase in general:
- Remove useless resources
- Upgrade kotlin to 1.5.2
- Upgrade coil to 1.2.2
2021-06-26 19:53:57 -06:00
OxygenCobalt
e7d3dd0a98
deps: upgrade deps
Dependency Upgrade Chore:
Fragment -> 1.3.5
ExoPlayer -> 2.14.1
RecyclerView -> 1.2.1
2021-06-16 13:00:52 -06:00
OxygenCobalt
58eee7a891
playback: improve mediasession reliability
Fix some issues with PlaybackSessionConnector that resulted in the
position being stuck when a new song was played, alongside simplifying
the connector code to an extent.
2021-06-01 10:44:37 -06:00
OxygenCobalt
1ddff8c6d3
playback: create custom mediasession connector
Create a custom session connector that connects between
PlaybackStateManager and MediaSession. The previous session connector
that was part of the exoplayer library turned out to cause bugs that
could cause the covert art not to show on the lock screen and to not
be recognized as proper player controls. This new connector
[once complete] should fix these issues.
2021-05-30 16:42:45 -06:00
OxygenCobalt
cd930554bf
deps: update androidx/kotlin
Upgrade deps chore:
core -> 1.5.0
fragment -> 1.3.4
kotlin -> 1.5.10
2021-05-30 16:42:13 -06:00
OxygenCobalt
55dfc681ad
Upgrade dependencies
Routine dependency upgrade chore:

Android Gradle Plugin -> 4.2.1
ExoPlayer -> 2.14.0
2021-05-17 18:39:03 -06:00
OxygenCobalt
ec3e388071
Version 1.4.0
Ready for version 1.4.0 of Auxio.
2021-05-09 14:41:42 -06:00
OxygenCobalt
0ba1048ead
Fix problems from plugin update
Remove the fixAnimInfoLeak hack since it seems that issue was fixed in the new android plugin, and once again modify with the styles to get the dialogs to use the correct style again.

Another day another magic flag I need to fiddle with to get this busted android app working. This platform sucks so much.
2021-05-08 08:38:09 -06:00
OxygenCobalt
7c457d5773
Update dependencies
Update kotlin to 1.5.0 and the android gradle plugin to 4.2.0.
2021-05-05 20:11:48 -06:00
OxygenCobalt
0daca207b0
Fix bug with playing item highlighting
Fix a problem where the wrong playing item would be highlighted if the names of the items were identical.
2021-05-02 18:08:39 -06:00
OxygenCobalt
c5c16dfdce
Add duration to artist songs
Add a duration TextView to the artist song item.
2021-04-27 06:13:14 -06:00
OxygenCobalt
029a4b1ff6
Refactor margin/padding
Do two things to the margin and padding system:
- Remove the redundant padding/margin dimens and replace it with a unified "spacing" dimen namespace
- Make most margin and padding dimens follow the divisible-by-8 rule in material design
2021-04-25 14:59:21 -06:00
OxygenCobalt
39f26b4feb
Update dark mode grey accent
Update the grey accent on dark mode to improve visibility.
2021-04-25 14:28:28 -06:00
OxygenCobalt
2d4ddc0460
Upgrade gradle to 7.0
Update the gradle version to 7.0, because I can.
2021-04-16 19:59:34 -06:00
OxygenCobalt
90de930377
Fix queue update issue
Fix a bug where the queue would not be updated when the queue looped around to the beginning.
2021-04-14 14:30:32 -06:00
OxygenCobalt
732b89a0b1
Update dependencies
Update multiple dependencies to newer versions:
RecyclerView 1.2.0 -> 1.3.0
Coil 1.1.1 -> 1.2.0
Media 1.2.1 -> 1.3.0
Navigation 2.3.4 -> 2.3.5
ExoPlayer 2.13.2 -> 2.13.3

This commit also removes all dependence on JCenter. Woohoo.
2021-04-14 11:48:05 -06:00
OxygenCobalt
eb56068f80
Fix database issues
Fix some problems where PlaybackStateDatabase wouldn't downgrade [Problem when hopping between dev builds with db changes] and with assertBackgroundThread being public.
2021-04-03 11:08:27 -06:00
OxygenCobalt
0305eb0beb
Standardize settings entirely
Update the structure of the settings system to do several things:
- Finally use int preferences everywhere instead of the mix of strings & ints from before
- Create a new preference named `IntListPreference` that enables the use of integers in list preferences
- Actually centralize array values and default values into a single integers xml
- Isolate all the new migration code into a single file
- Refreshed the int tables used by data objects [DB version has been updated, will not update when other changes]

The only preference not migrated is doAtEnd since that is being planned to be retired in a future LoopMode update.
2021-04-03 10:53:16 -06:00
OxygenCobalt
53ec1aa8a5
Improve dialog layouts
Improve the dialog layouts so that only the recyclerview scrolls when it cannot fit instead of the entire layout being forced to scroll.
2021-03-26 15:24:04 -06:00
OxygenCobalt
076d2b3d7e
Update build configuration
Update the build config to further optimize the app
- Removed the browser dependency [-10k]
- Enabled resource minification [-100k]
2021-03-26 10:54:21 -06:00
OxygenCobalt
b65814fdbd
Redo blacklist dialog
Completely refactor the blacklist dialog to not only use the Storage Access Framework, but also to completely eliminate the material dialogs dependency.
2021-03-26 09:54:48 -06:00
OxygenCobalt
194bcfcd05
Fix more fast-scroll issues
Fix two more fast scrolling issues:
- Fixed size of the view would cut off larger fonts
- Thumb would briefly show when the view would initially start

This custom view was a mistake, but anything for less kbs.
2021-03-25 09:24:40 -06:00
OxygenCobalt
ec78684c25
Version 1.3.3
Ready for version 1.3.3 of Auxio.
2021-03-23 20:01:18 -06:00
OxygenCobalt
0a18108419
Unify fast-scroller
Completely unify the fast scroll indicators and the fast scroll thumb into a single view.
2021-03-23 14:35:32 -06:00
OxygenCobalt
cc3d4fb9c6
Explitly declare dependencies
Explicitly declare some dependencies that were originally implicit, resolving some future build issues.
2021-03-23 10:12:24 -06:00
OxygenCobalt
ffd3275ca5
Resolve fast-scroll resource issues
Accidentally forgot to move the resources from the fast scroll library, so here it is.
2021-03-22 16:17:16 -06:00