Commit graph

850 commits

Author SHA1 Message Date
Konstantin Tutsch
67f90a9494
Improved language quality of german translation 2022-03-17 20:53:43 +01:00
Konstantin Tutsch
4f4b493fb6
Added german translation for headset autoplay feature 2022-03-17 20:50:53 +01:00
Konstantin Tutsch
c00b078fcf
Updated German translation
Translation for rounded covers and the restart button
2022-03-17 16:12:11 +01:00
OxygenCobalt
484f5c8490
Merge branch 'dev' of https://github.com/cccClyde/Auxio into cccClyde-dev
Update strings translation for zh-rCN.
2022-03-15 06:25:47 -06:00
OxygenCobalt
0417a77b33
music: make resolvedName standard
Make resolvedName the standard name to use across all music items.

Previously, the way Auxio differentiated between names in UIs was to
use name for normal items and resolvedName for parents. This was odd
and disjointed, as it muddled the meanings of the two fields and lead
to a lot of bugs. Fix this by making resolvedName *the* standard name
to use across all music items, even in ones that don't have to resolve
their name.
2022-03-13 20:22:19 -06:00
OxygenCobalt
2ff7d93263
all: view cleanup
Do even more cleanup regarding views.
2022-03-13 18:56:24 -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
Clyde
2d9d986697
Update strings.xml
Update translations for zh-rCN
2022-03-12 09:03:37 +08:00
Clyde
b662d2e59d
Merge branch 'OxygenCobalt:dev' into dev 2022-03-12 08:47:34 +08:00
OxygenCobalt
82247775ac
Version 2.2.2
Ready for version 2.2.2 of Auxio.
2022-03-08 16:19:02 -07:00
OxygenCobalt
3293637cfd
all: minor cleanup
Do some minor cleanup before the next release.
2022-03-08 16:13:59 -07:00
OxygenCobalt
7b5c49a5b3
ui: disable default actions in drag helpers
Disable the default long-press action in the ItemTouchHelper usages.

ItemTouchHelper provides a long-press action to start an item drag by
default. However, because Auxio adds a drag handle on top of this
action, this actually results in a conflict with the default behavior
in certain cases. Replace it with a custom version of the long-press
action within the viewholders themselves.
2022-03-07 08:33:49 -07:00
OxygenCobalt
d3d6d18d5d
music: fix crash below android 8 [#95]
Fix a crash that stemmed from the use of the API 30+ database field
CD_TRACK_NUMBER.

I switched to CD_TRACK_NUMBER in 1e39ceb to fix [#88], however I did
not realize that CD_TRACK_NUMBER was actually only supported on API
30 onwards. This led to a load failure on versions before API 30.
2022-03-07 07:18:15 -07:00
OxygenCobalt
b5b8767f46
playback: fix crash with state restore [#89]
Fix an esoteric crash with queue synchronization during the playback
restore process.

Auxio will attempt to re-synchronize the queue index whenever it is
desynchronized, however during the check for if it's desynchronized,
Auxio would do a direct index of the queue, which could result in a
crash in situations where the desynchronized index is outside of the
queue bounds.

Fix this by replacing that unprotected access with a protected access,
which not only fixes the crash but also still correctly detects
desynchronization in that case.

Resolves #89.
2022-03-06 19:25:48 -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
6d003c308b
playback: fix headset focus autoplay issue
Fix an issue where headset focus would result in unexpected playback
whenever the service started.

AudioManager.ACTION_HEADSET_PLUG seems to always fire when the initial
BroadcastReceiver is set up, which results in a weird bug where if a
wired headset is connected while PlaybackService is started, playback
will start immediately, which was not user friendly.

I fear that this may result in an edge case that results in headset
focus not firing in an unrelated situation, which in that case I would
be forced to remove headset autoplay entirely (or at least relegate it
to a quirk option).
2022-03-03 18:47:55 -07:00
OxygenCobalt
1e39ceb9fc
music: add more failsafes to loading process
Add even more checks and guards to the music loading process to ensure
proper metadata loading.

Auxio has always had issues handling track numbers and years, mostly
with ensuring their validity. This change resolves them by more or less
surrounding them with gobs of null-checks and fallible parsing
routines, which should help avoid frustrating bugs and crashes with
metadata in the future.

Resolves #88.
Resolves #84.
2022-03-01 19:52:28 -07:00
OxygenCobalt
dbe0bd1bb3
ui: revert list item changes
Revert the removal of the song/artist values from list items for now.

The current plan of removing extraneous values from songs and albums
only works if I add multi-select and a dedicated menu button, but that
is still in the air, and in general I want feedback before I go ahead.
Aside from reverting the previous changes, this actually standardizes
all item descriptions under a single bullet point formatting system,
instead of the mix of commas and bullet points that existed beforehand.
2022-02-28 19:27:57 -07:00
OxygenCobalt
a408cc629d
strings: remove redundant spanish translation
Remove the strings.xml.old file in the spanish translations.

This was generated from vim when #87 was created. It's redundant, so
remove it.
2022-02-28 19:01:12 -07:00
n-berenice
88f815ed9f Redone from scratch
Previous file was too incomplete and had too many mistakes in order to be fixed, fully redone.
2022-02-28 22:12:56 -03:00
OxygenCobalt
d7babcba71
ui: remove album name from song items
Remove the album name from the main song item in favor of a duration
value.

Auxio has traditionally used "Artist . Album" for song items. However,
this had some shortcomings:
1. The way the artist and album names are packed probably results in
truncation on small screens, which I doubt is very helpful.
2. All other items in Auxio have only one specific "subject" per line,
which makes the song items a bit of an outlier since it has two (the
artist and the album)
3. The empty space available could be used for another UI element,
such as a duration or maybe a menu button in the future.

For consistency, this also removes the song count from all album items
as well.
2022-02-25 08:12:26 -07:00
OxygenCobalt
c5be39774a
ui: remove memberBinding [#80]
Remove all usages of memberBinding from the app.

For some reason, certain devices running Android 10 and lower will
have a lifecycle race condition whenever the theme is mis-matched.
This ends up resulting in an invalid state whenever memberBinder was
used. Since we can't replace memberBinder with a better solution,
just dumpster the whole thing. This platform is so god damn broken,
jesus christ.

Resolves #80.
2022-02-24 19:31:48 -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
9171f9a3b4
coil: make mosaics use squareframetransform
Change createMosaic to use SquareFrameTransform.

This should help fix a theoretical bug where non-1:1 album covers will
be oddly stretched in a generated mosaic, as all album covers will be
forcefully cropped to a 1:1 ratio.
2022-02-24 14:58:59 -07:00
OxygenCobalt
61dbfe3185
coil: make rounded images more nuanced
Create a custom view for rounded images, making them more nuanced in
the process.

The previous method for applying rounded images in-app was generally
clunky and fragile. Introduce a new custom view that actually takes a
cornerRadius attribute from the ImageView itself that then applies it
whenever the user enables the setting. This also allows rounded images
to be more nuanced, as typical 8dp elevation can be used for small
views and a more fitting 16dp radius can be used for large views.
2022-02-23 17:42:34 -07:00
OxygenCobalt
280b582efa
home: rework fab adaptiveness
Rework how the fab's adaptive functionality works.

Handle fab adaptiveness by using a style instead of a fully custom
view. This helps eliminate a usage of private resources.
2022-02-23 16:13:59 -07:00
OxygenCobalt
87035805d2
ui: general cleanup
Clean up a bunch of UI issues that have accumulated.
2022-02-23 15:26:40 -07:00
OxygenCobalt
22258a3e6b
style: add disabled state to switches
Add a disabled state to the M3 switches.
2022-02-22 17:44:56 -07:00
OxygenCobalt
35b75b5f81
music: rename BaseModel to Item
Rename BaseModel to Item to make the meaning of it clearer.
2022-02-22 17:44:36 -07:00
OxygenCobalt
3aaa2ab0e0
all: rework logging
Rework logging to be clearer and more standardized.

Rework all usages of lossing to follow a single unified style,
introducing a new "warn" option alongside this.
2022-02-22 17:24:51 -07:00
OxygenCobalt
e1dbe6c40c
coil: force all images to a 1:1 aspect ratio
Crop all images to a 1:1 aspect ratio.

Sometimes cover art will not be a square. I never realized this because
all covers in my music library are square. This led to many strange bugs
that I would rather avoid, so create a new transformation that crops the
image to a 1:1 aspect ratio.

The reason why we use a transformation is that it won't be dependent on
the actual state of the ImageView, which is what would happen if we
used ScaleType.CENTER_CROP. In the case that we use a very weird hacky
ImageView like in the widgets, doing such would result in any cropping
not actually working correctly. It's better to do it in the
Transformation stage simply to ensure consistency.
2022-02-21 20:00:30 -07:00
OxygenCobalt
6fc3c9374c
style: rework dynamic colors
Allow the material library to handle dynamic colors.

Turns out I was mis-understanding how DynamicColor themes were meant to
be used by the material library. Turns out you can just inherit from it
and it will work perfectly fine. Refactor the V31 styles to remove our
insane shims and finally fix the slapdash dynamic color usage across
the main theme and widgets.
2022-02-21 17:07:06 -07:00
OxygenCobalt
9304e58190
playback: rework playback icon visibility
Add a circular indicator to playback icons.

Sometimes it can be too difficult to tell apart the active and inactive
states of the shuffle/loop icons. However, there is really no good way
to improve the contrast on these icons without some kind of muddled UX
fragmentation, or god-awful design. Try to settle on the okay-est
version, which is to use colorPrimary with a dot indicator on views we
control, and use a more muddled semi-transparent icon on views we don't
control, like notifications and widgets.
2022-02-21 16:36:08 -07:00
OxygenCobalt
2a74ff906c
style: enable drop shadows before api 28
Re-enable drop shadows on the playback bar and queue items on API 27
and lower. This is mostly to make Auxio line up with the M3 styles as
a whole.
2022-02-19 11:06:10 -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
d4513293a7
all: cleanup
General app cleanup.
2022-02-18 19:03:25 -07:00
OxygenCobalt
83dc6cd4c9
app: expose file opening intents better [#78]
Copy-paste some extra fields onto the file opening intent filter as to
[hopefully] get Auxio to be recognized by OEM skins better.

Some OEM skins don't seem to do a basic query for an app that matches
the APP_MUSIC category. Instead, they do some insane query for apps
that match this specific file intent structure that Auxio does not fit
for whatever reason. Try to graft some manifest features from the MPV
android app to make Auxio correctly expose this. I have no idea if this
will actually do anything.
2022-02-15 19:27:44 -07:00
OxygenCobalt
5b57d77d02
playback: disable audio focus setting on api 31
Disable the ability to customize audio focus on Android 12 and up.

Android 12 automatically regulates audio streams even further than it
did in previous versions, to the point where the audio focus setting
no longer makes sense on that version. I may extend the removal to all
versions in the future.
2022-02-15 06:33:21 -07:00
OxygenCobalt
30ad7f99db
playback: fix headset focus bug
Fix an issue where headset focus would restart playback unexpectedly.

At some point during the broadcast refactor, I accidentally switched
the values of CONNECTED and DISCONNECTED when handling
AudioManager.ACTION_HEADSET_PLUG. This resulted in playback starting
for no reason in some situations.
2022-02-14 19:46:04 -07:00
OxygenCobalt
ec358a13e3
style: apply body typography
Use body typography in more places, reworking the letter spacing as to
make it more pleasent to use with the inter typeface.

This should hopefully be the last time I fret over typography.
Everything should line up in the way desired by M3.
2022-02-13 15:39:34 -07:00
OxygenCobalt
f377e144dd
style: remove elevation from toolbars
Remove the elevation component from all toolbars and the bottom bar.

Material3 states that top and bottom app bars should not cast a drop
shadow. Auxio ignored this and used one anyway. This largely stemmed
from incorrect use of the AppBarLayout styles, which were mostly just
incorrect M2 styles with a new background plastered over. Fix this
by creating a new style that inherits the proper M3 styles and then
using that on all AppBarLayout instances in the app.
2022-02-10 17:34:03 -07:00
OxygenCobalt
04bec3161f
music: modify model configuration
Do a couple things to the music models:
1. Make the genre field non-nullable. This is because I beleive I've
largely eliminated the genre bugs in previous versions and future ones
can be caught with a crash screen I plan to add.
2. Make the initial album grouping process use hashCode instead of a
pair of names. This just helps with loading speed in general, albeit I
am slightly worried that it may result in improper grouping if some
edge case appears.
2022-02-08 06:56:49 -07:00
OxygenCobalt
f4217a337a
style: tweak body typography
Apply body typography in new places in the app.

For awhile, Body and Title typography were used interchangeably, as
they occupy the same text size range. This commit defines the Body
text as to be used for one-line widgets or tertiary widgets, while
the Title text is defined to be used for multi-line or heading widgets.
2022-02-08 06:23:43 -07:00
OxygenCobalt
4a326cc4ff
all: fix sloppy code
Fix some dumb and sloppy code that I made in the rush to complete
2.2.0.
2022-02-07 20:08:18 -07:00
Clyde
245e0f5dc1
Update strings.xml
Update zh-rCN translations accordingly with the latest `strings.xml`.
2022-02-07 06:22:29 -07:00
Clyde
0a9c7124db
Update strings.xml
Update zh-rCN translations accordingly with the latest `strings.xml`.
2022-02-07 12:26:22 +08:00
OxygenCobalt
4d384f4cbd
Version 2.2.0
Ready for version 2.2.0 of Auxio.
2022-02-06 19:23:54 -07:00
OxygenCobalt
a51f1aa5b9
pref: fix application of m3 switches
Fix an issue with M3SwitchPreference where the switch would not update
properly.

When reacing M3SwitchPreference, I wanted to make an optimization
regarding updating the switch to M3, so I decided to make the
preference check if they have already applied the switch, and then
ignore it if that's the case. However, I ended up forgetting that
ViewHolders tend to need to be re-bound, which resulted in this
optimization leading to inconsistent application of the M3 switches.
Fix this by removing that optimization.
2022-02-06 19:20:29 -07:00
OxygenCobalt
d9e2d7f07a
docs: rework contribution info
Update the contribution information and templates.

The contribution information and templates were growing a bit stale,
given that they haven't gotten a refresh since ~1.3.0. This commit
reworks them to be more thorough and straightfoward.
2022-02-06 14:33:36 -07:00
OxygenCobalt
470187422a
docs: add changelog
Add a CHANGELOG document that keeps track of the past and current
release notes.

Making all of our releases rely on GitHub to keep track of them is not
really a good idea, so this document serves as a record of past release
changelogs just as a pre-caution. It also allows a live preview of the
next version whenever something is changed.
2022-02-06 14:01:03 -07:00
OxygenCobalt
8e0d27696d
detail: improve track number handling
Improve the way track numbers are handled in the album detail view.

Previously, Auxio would show track numbers by simplying stringifying
the integer and then showing it in a TextView. This was problematic for
two reasons:
- Numerics from other languages like Arabic would not be respected
- Invalid track numbers [e.g 0] would be shown regardless of the
situation.

This commit fixes that by placing all track numbers through a format
string first, and showing a generic song icon instead of a number
whenever the track number is 0.
2022-02-06 11:19:50 -07:00
OxygenCobalt
4b919b121a
util: rework context utilities
Completely rework the Context extensions for resources.

Previously, Auxio has used a strange hodge-podge of context extensions
and verbose code to get resources. Fix this by unifying most of the
resource accesses under a single, unified set of extensions. The only
ones excluded for now is the getString call, as that is used in far too
many places to effectively replace.
2022-02-06 10:45:40 -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
0209e526e1
all: general cleanup
Do some general code cleanup.
2022-02-06 09:01:51 -07:00
OxygenCobalt
4d22b99577
playback: re-add index correction
Re-add index correction, albeit with a new system that accomodates the
single queue mechanism.

The issue with using the previous queue mechanism for the single queue
was that it risked using the index of an incorrect duplicate song, as
the search would always start at index 0. Fix this by implementing a
sort of "wobbly" search that starts at the current index and moves back
and forth, checking the closest items first and the furthest items
last.
2022-02-05 11:40:45 -07:00
OxygenCobalt
685d3af12f
settings: remove 1.4.0 compatibility
Remove 1.4.0 setting migrations.

It's been nearly a year. Everyone should have migrated by now.
2022-02-05 11:01:03 -07:00
OxygenCobalt
b047b50411
settings: add option to force-reload the app
Add an option to force-reload the app.

Currently, Auxio will load music once and then never re-load it. This
is a really decision I made early on and now regret completely. The
only way to remedy this properly is to create an automatic rescanning
system, but that is a major technical undertaking that I want to save
for later.

Resolves #71.
2022-02-05 10:30:03 -07:00
OxygenCobalt
0a216def1b
strings: tweak arabic translations
Fix the plurals and audit RTL usages in the arabic translations.
2022-02-05 10:06:13 -07:00
OxygenCobalt
4774fbaa4e
Merge branch 'dev' of https://github.com/hasanpasha/Auxio into arabic-dev 2022-02-05 09:49:52 -07:00
OxygenCobalt
92ac7d9a9d
strings: rework russian translations
Improve the russian translations for this app.

These translations were proposed by lisiczka43 with the following
rationale:

"[use] less literal translations, [use] shorter wording to fit into UI
elements,  [correct] mistranslations, [improve] consistency of
terminolgy, [enforce] strict ё, [add] missing new strings"

Apparently the previous russian translations were quite Amateurish.
This should make them better.
2022-02-05 09:45:18 -07:00
OxygenCobalt
20245db261
style: update inter
Update the inter font to v3.19.
2022-02-05 09:23:37 -07:00
OxygenCobalt
b121b6428d
music: refactor music grouping
Completely refactor the way music is grouped up into artists and
albums.

The issue with previous attempts at implementing better artist
management was the reliance on MediaStore IDs in many parts of the
program. Dumpster this by merging the hash and ID values into a
single field that is garunteed to be unique enough. This allows songs
to be adequately grouped into case-insensitive artists while also
deduplicating albums that may have been split my MediaStore due to
heterogeneous formats.

Resolves #66.
2022-02-04 20:55:48 -07:00
hasanpasha
bdaa0519d8 add arabic tranlation 2022-02-04 14:49:54 +03:00
OxygenCobalt
6e00fd1129
music: merge duplicate albums [#66]
Move all duplicate checking to the album creation stage, adding a new
check for duplicate albums.

Album names can be similarly duplicated as artist names, most often
when one has an album consisting of multiple differing file formats.
This commit fixes that by grouping albums up by their ID as usual,
but then merging together albums that have the same (lowercase) album
name and (lowercase) artist name.
2022-02-03 20:05:20 -07:00
OxygenCobalt
433d623f14
strings: fix improper usage of plurals
Use a proper composition of the "many" and "other" fields in the plural
fields of specific languages.

In the french/czech plural configuration, both "many" and "other" are
used for string fields. The lint does not make this obvious, so in
d7f34e6 I ended up switching the "other" field to "many". This resulted
in some devices on those languages crashing. To fix this, we define
the "many" and "other" fields with the same value to avoid a crash.

Resolves #69.
2022-02-02 07:17:28 -07:00
OxygenCobalt
3c9ffd5946
style: re-add inter
Re-add the inter typeface.

It's not good design to have two similar typefaces, so I may as well
revert back to Inter once and for all. It's too good of a typeface
compared to the mess of Roboto and other native fonts.
2022-01-30 20:31:40 -07:00
OxygenCobalt
9514f17bc7
music: group artists case-insensitively [#66]
Group up album artists case-insensitively.

Music files from the same artist may format the artist differently, such as being
in uppercase/lowercase forms. If we have already built an artist that has a
functionally identical name to another artist, then simply merge the artists
instead of keeping them separate.
2022-01-30 17:29:42 -07:00
OxygenCobalt
50a2305f63
music: respect individual artist names [#66]
Modify the music loader to use the normal artist name when using song
titles while still retaining album artist functionality.

Oftentimes music files will be tagged as to use the artist tag to
specify performers, collaborators, and others, and then use the album
artist tag to group them up into a single artist. Previously, Auxio
would only use the album artist tag, which flattened the collaborator
information out for consistency. Resolve this by implementing a sort
of "resolved artist name" for songs that is used in the UI and nowhere
else. This seems to work well, but at the same time further ruins the
API surface for handling music objects. An acceptable price to pay
for a better UX.
2022-01-30 16:46:11 -07:00
OxygenCobalt
50f6f8f348
style: migrate body type to roboto
Migrate to the native roboto typeface on body elements.

Migrating to the native typeface saves on APK size, contributes to a
more native look and feel, and create a more compact UI for smaller
devices. Inter Semibold remains as the "Flair" type that distinguishes
Auxio from other apps.
2022-01-29 10:25:35 -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
f2e4a3a369
deps: move exoplayer to app
Move ExoPlayer from a top-level directory to srclibs.
2022-01-26 19:56:38 -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
317b12579c
playback: expose media button receiver
Expose a custom MediaButtonReceiver that handles the media button
intent. This is not because I wanted to implement this. Some apps
like gadgetbridge just blindly query ACTION_MEDIA_BUTTON instead of
relying on the more modern MediaController API, which I expected
most apps would use instead.

Resolves #62.
2022-01-25 17:20:26 -07:00
OxygenCobalt
c9f789e388
revert "style: migrate to roboto"
I want to hold off with this migration actually. I feel like it's too
jarring of a change to be included as of right now.
This reverts commit 50170f202e.
2022-01-23 12:42:49 -07:00
OxygenCobalt
3de5fecf4a
coil: gracefully handle file handling failures
Wrap the basic fetchArt call in a try statement to prevent exceptions
from being unable to open a file from propagating outwards. This allows
us to safely degrade when creating mosaics.
2022-01-23 11:30:26 -07:00
OxygenCobalt
b04611c3be
playback: fix media intent detection [#62]
Some apps query for media apps by checking for apps that have a
BroadcastReciever that handles the ACTION_MEDIA_BUTTON intent. However,
Auxio does not have a custom media button reciever, instead relying on
the androidx media button reciever. This resulted in Auxio not showing
up in apps like GadgetBridge. Fix this by exposing the androidx media
button reciever in the manifest, which allows this app to be detected.
2022-01-23 11:04:27 -07:00
OxygenCobalt
c98d131316
style: implement m3 switches
Implement a facimile of the new Material 3/You switches in the settings
menu. There's no defined spec for this yet, so I just shamelessly ripped
the implementation from Doodle.
2022-01-23 10:56:34 -07:00
OxygenCobalt
50170f202e
style: migrate to roboto
Dumpster Inter in favor of Roboto. This is mostly for three reasons:
1. Reduces the insane typography setup that Auxio uses
2. Reduces total app size since .ttf files are pretty large and the
dynamic fonts feature was proprietary.
3. Creates a more cohesive look and feel given that nearly every
android app also uses Roboto.
2022-01-23 10:17:47 -07:00
OxygenCobalt
eadf4cc86d
detail: extend smart queue disabling to detail
Add the queue disabling functionality from 47fca78 to the album detail
fragment as well.
2022-01-21 19:59:00 -07:00
Clyde
c8f1fd1094
Update strings.xml
Complicated Simplified Chinese localization accroding to the latest strings from `/app/src/main/res/values/strings.xml`.
2022-01-21 15:00:22 +08:00
OxygenCobalt
47fca7819f
ui: disable queue adding if no playback
If theres no playback going on, disable the play next/add to queue
options, as they will have no effect. This mostly for QoL purposes.
2022-01-19 06:52:05 -07:00
OxygenCobalt
e5901fa9e2
playback: use gesture insets in playback layout
When using gesture navigation, swipe up events might conflict with the
slide up behavior of the playback layout. To fix this, inset the
playback bar based on the gesture insets instead of the system bar
insets.
2022-01-18 19:51:06 -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
95e8b06f19
style: extend edge-to-edge on all versions
Extend edge-to-edge to versions below Android Oreo. This is done
through tinting the navigation bar colors on those versions,
circumventing the coloring issue.
2022-01-15 20:12:23 -07:00
OxygenCobalt
4dcc3c3b69
playback: fix queue adding with one-song queues
Fix an issue where with queues of one-song, adding another song with
"Play next" results in it going behind the current song. This stemmed
from a fix for a crash with empty queues, so instead of doing some
insane min/max logic we just check if the queue is empty and just don't
add the item if it is. It will only get overwritten anyway.
2022-01-13 20:24:02 -07:00
OxygenCobalt
ddf2757cb6
playback: add dynamic replaygain mode [#7]
Add a "Dynamic" replaygain mode inspired by the FooBar2000 plugin. This
will automatically determine whether the playback is in an album or not
and use the album gain or track gain accordingly.
2022-01-13 20:15:22 -07:00
OxygenCobalt
5359c819bd
prebuild: reformat
Reformat the prebuild file, which apparently decided to format
themselves with indents instead of spaces. Fun.
2022-01-09 19:00:55 -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
5e3569d173
all: general cleanup
General cleanup. About to do another major playback change, so
push these changes now so they are not changed later.
2022-01-09 08:22:14 -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
049b279e1f
playback: add playing from indicator to fragment
Add the "Playing From" indicator that used be on the queue to the
main playback view.
2022-01-08 09:26:26 -07:00
OxygenCobalt
13730c303c
util: fix number issues
Fix issues where invalid durations and years would not be aliased to
readable values.
2022-01-08 08:59:11 -07:00
OxygenCobalt
e099d1c38c
playback: switch audioreactor to callback system
Switch AudioReactor to a callback-based system. This makes updating the
volume much faster, as it's no longer reliant on a 500ms polling
interval.
2022-01-07 16:00:37 -07:00
OxygenCobalt
70ac37ca8a
playback: fix seekbar crash
Fix an edge case where if the total duration ends up being zero,
the app will end up crashing at the playback screen. Thank SeekBar
for deciding that it's perfectly okay to crash instead of decay
gracefully when valueTo is 0.
2022-01-07 14:10:45 -07:00
OxygenCobalt
9a7571a59a
playback: add replaygain setting
Add a settings option for ReplayGain.
2022-01-06 17:27:45 -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