Make adapter instances handle span sizes.
This supercedes the hackier solution where the fragments would have to
reference adapter data in order to determine span size. Not anymore.
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.
Revert the song menu in the playback panel to being in the toolbar.
It was mostly inconsistent and cause a lot of truncation. I'll figure
out what I want to do when I implement liked songs.
Add a fast scroller to the queue view.
This is actually easy to implement without disruption. Now the detail
view is the only view without such a fast scroller, as it needs more
reworks for it to be feasible.
Switch position math to rely on deciseconds (1/10th of a second)
instead of full seconds.
This makes seeking and position management much smoother, with minimal
performance cost. In the future I may try to migrate the playback state
so that the position calculations are done on the UI end, but this
works for now.
Make the thumb visible if a popup provider is found later.
Fixes an issue where the fast scroll thumb would only be visible
sometimes in the home view.
Make PlaybackService handle delayed actions.
I wanted to do this before, but technical limitations always
stopped me from doing so. Turns out all I needed was a dash
of global mutable state to make it all work. This is actually
really good, as it separates concerns better and paves the way
for future improvements to the service.
Make the shape of the play/pause buttons throughout the app morph from
a circle if paused to a square if playing.
Android 13 seemingly does this to their play/pause button, so we copy
it too.
Tangentally related to #162.
Do not check for the version when managing the notification.
Some OEMs will update the android system, causing the version number to
change, but will THEN not update the system UI, completely breaking my
compat hacks. Because you know. Reasons. Fix this by always applying
future and obsolete methods of updating the media notification
regardless of the context.
Resolves#219.
Migrate MediaSessionComponent to android 13.
This was primarily implementing custom actions with the media session
and adding some extra bug fixes that I was already planning. I was
really hoping that google fixes the nightmarish mess that was the
previous MediaStyle notification, where I had to update the session
and then the notification in a tight dance with clever tricks to not
get rate-limited, but nope. I still have to do exactly the same thing
as beforehand, but with even extra insanity due to the custom actions.
Work aroudn an issue in Android 13 where bitmap pooling would not work
correctly and reduce our max memory limit by ~10x.
When I mean work around, I mean that we reduce the size of the rounded
covers further to ensure we aren't hitting the memory limit. This also
sadly blocks us from further RemoteViews instances, as the bugged
memory size will continue to increase if we do that.
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)
Auxio tried to leverage built-in android string attributes for Ok and
Cancel while still completing them for other translations that were not
supported by the OS.
Turns out this was a terrible idea when I switched to Weblate, which
has no knowledge of this trick and could lead to a misleading
translation value. Remove it.
Resolves#215.
* Translated using Weblate (Czech)
Currently translated at 100.0% (222 of 222 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 89.6% (199 of 222 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/
* Translated using Weblate (Russian)
Currently translated at 98.6% (219 of 222 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (222 of 222 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/
Co-authored-by: Fjuro <fjuro@seznam.cz>
Co-authored-by: Luiz-bro <luiznneto1@gmail.com>
Co-authored-by: Егор Ермаков <eg.ermakov2016@yandex.ru>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Move all menu functionality from long-click to a menu button.
This is in preparation for #93, as I need to free up the long-click
for a selection option. The spacing isn't really consistent at all,
but that's because I wanted to make something that looks right
depending on the context.
Re-add the song menu option to the title section of the playback view.
This is again, due to the addition of the equalizer button, but also to
make this menu easier to reach.
Replace the song options button in the playback menu with a button that
opens the equalizer.
I plan to re-introduce the song options in another location.
Remove the "Off" ReplayGain setting, as it is mostly meaningless.
Users who don't want ReplayGain can remove the tags from their files.
No efficiency benefits either since the audio processor is always
disabled without replaygain tags. It is better not to confuse users
who do have ReplayGain but wonder why it is not working on their
files because the setting is off.
* Translated using Weblate (Czech)
Currently translated at 100.0% (218 of 218 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/
* Translated using Weblate (German)
Currently translated at 100.0% (218 of 218 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/
* Translated using Weblate (Russian)
Currently translated at 99.0% (216 of 218 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (218 of 218 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/
* Translated using Weblate (Czech)
Currently translated at 100.0% (21 of 21 strings)
Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/cs/
* Translated using Weblate (Russian)
Currently translated at 99.0% (217 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/
* Translated using Weblate (Greek)
Currently translated at 43.8% (96 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/el/
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (219 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/
* Translated using Weblate (Spanish)
Currently translated at 99.0% (217 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/
* Translated using Weblate (Greek)
Currently translated at 55.2% (121 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/el/
* Translated using Weblate (Czech)
Currently translated at 100.0% (219 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/
* Translated using Weblate (Croatian)
Currently translated at 100.0% (219 of 219 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hr/
Co-authored-by: Fjuro <fjuro@seznam.cz>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Егор Ермаков <eg.ermakov2016@yandex.ru>
Co-authored-by: Clyde Johanson <johnson.hu95@gmail.com>
Co-authored-by: lunand <paulefstathiou2009@gmail.com>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Iago <translate@delthia.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Alexander Capehart <oxycblt@abstractr.net>
Add the ability to customize the bar action to the repeat mode or
shuffle state.
This is a much smaller implementation than what I planned, mostly
because other options did not make much sense (queue) or were
superceded by better options (clear state).
Resolves#108.
Add support for external AudioEffect implementers, like Wavelet.
Doing this involves doing a weird broadcast dance with AudioEffect
Intents at special points to indicate a valid audio session that
can be manipulated. Still has some issues, such as a null name
showing up in wavelet. As far as I am aware, this is the best
possible system I can do, and allows me to delegate an equalizer
implementation to other apps instead of making my own.
Resolves#211.