Commit graph

80 commits

Author SHA1 Message Date
Alexander Capehart
0f691ee65b
tasker: remove
Can't do this right now, lifecycle is broken.
2024-05-18 17:35:04 -06:00
Alexander Capehart
51309ebabb
tasker: plugin tweaks 2024-05-17 21:07:41 -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
c69d3cac54
info: flag android auto support
Technically possible now, have not been able to test.
2024-04-11 15:06:16 -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
04ea6834fb
playback: rearchitecture around media3 (prototype)
Nowhere near complete in any capacity.
2024-04-07 23:25:53 -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
588b6e9abd
info: explicitly declare notification perm
Some OEMs might be looking for this before approving even media
or foreground service notifications.
2024-01-18 19:29:46 -07:00
Alexander Capehart
321bbcf03f
all: fix api 34 crashes
Fix general API 34 crashes that I could notice immediately.

Can really test any further since the API 34 AVDs are currently potatos
running at 3 FPS for some reason.
2023-06-15 13:32:05 -06:00
Alexander Capehart
96874b3324
music: do not transfer cache db
Do not transfer the cache db between devices, drop it instead.

This is at best useless (timestamps and ids will be invalid) and at
worst actively detrimental (timestamps and ids are similar), so
better to reindex than try to read from the cache.

Resolves #467.
2023-06-07 09:43:17 -06:00
Alexander Capehart
df98bb535f
list: rework diffing abstraction
Make all adapters relying on diffing unified into a DiffAdapter
superclass that can then accurately respond to the new
UpdateInstructions data.

UpdateInstructions is still not fully used everywhere, but will be
soon.
2023-01-15 20:31:50 -07:00
Alexander Capehart
7721e64096
music: split off extractor parsing
Split off parsing-related components from extractor into a new parsing
module.

A lot of these methods are used in non-extractor code, so it makes more
sense for them to not be part of the extractors.

The code that is really extractor-specific can remain within the
extractor files.
2022-12-31 19:50:54 -07:00
Alexander Capehart
295d2dfd39
search: redocument
Redocument the search module.
2022-12-24 10:18:05 -07:00
Alexander Capehart
2b35fd07b6
playback: disable bluetooth autoplay
Temporarily disable and clean up the bluetooth autoplay system for now
until I can get it working sensibly.
2022-11-14 20:46:12 -07:00
Markus Ebner
d0f9b049de
Implement bluetooth autospawn / autoplayback feature #235 2022-09-08 18:16:41 +02: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
3cef088d12
music: switch to new storage perms
Switch to the new READ_AUDIO_STORAGE permission for Android 13.
2022-08-16 12:31:36 -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
9ca4f70315
music: add id3v2.3 full date support [#159]
Add support for the ID3v2.3 TDAT and TIME frames to the ExoPlayer
parser.
2022-07-17 14:18:18 -06:00
OxygenCobalt
4d283bc91d
ui: fix app theme
Make the app theme (Shows before activity startup) the blue theme
instead of the default material purple.
2022-07-15 12:13:47 -06:00
OxygenCobalt
94f2d28936
music: rework indexer thread safety
Move the switch from IO to Main to within Indexer itself, through
withContext.

This is much easier to work with than the previous system of a separate
"update" coroutine, which isn't really needed anymore given that I no
longer need to do IO work when sanitizing the playback state.
2022-07-07 16:47:21 -06:00
OxygenCobalt
29fe849565
playback: add shuffle shortcut
Add a shortcut to shuffle all songs.

This is likely the only static shortcut Auxio will have. Top tracks
and recently added are completely useless for me, so I will never
add them. I may add more dynamic shortcuts for recently played items,
however.

Note that we use a basic black shuffle icon here. I will not add icon
customization to these shortcuts.
2022-06-18 11:20:22 -06:00
OxygenCobalt
e914da4bd1
music: default to codecs in format
Only show codecs in the "format" field, if we are able to extract them.

This is primarily for consistency, as there is no way for us to
determine the container format outside of an extension (which could not
be sane).
2022-06-13 09:41:52 -06:00
OxygenCobalt
a6c321cfa5
home: make toolbar collapse
Make the home toolbar collapse on scroll.

I was planning to implement this back in 2.0.0, but visual bugs stopped
me. Now, knowing how much space the the Toolbar + Tab combination takes
up on smaller devices, I think it would be better to have this in
general.
2022-06-08 09:31:57 -06:00
OxygenCobalt
08caa01dca
music: add indexer service
Add a dedicated service towards the loading of the music library.

This new service was created for two reasons:
1. Music loading is slow and resource-intensive, so putting it on the
ViewModel layer just didn't seem right and made it vulnerable to the
OS simply stopping the loading process.
2. For automatic rescanning [#72], there must be something watching
the music library and waiting for a change in the background. This
would require a service as that is probably the least insane way to
do that kind of background work.

I have no garuntees how viable the service might be. If anything, it
might be halted by some insane android restriction or issue that
makes it more or less impossible to use for most apps, and I will have
to largely drop truly automatic rescanning.
2022-06-03 20:12:27 -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
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
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
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
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
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
2be49b0042
playback: remove playback subtitle
Remove the playback subtitle for now. I'm considering re-adding it
eventually, but I want to make it so that the UI is less cluttered.
2021-11-25 14:22:47 -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
443c26fe98
styles: refactor style methodology
Refactor the styling again to make all styles start with the Auxio
prefix. Also try to phase out the usage of layout_width and
layout_height in most places, since those can cause a lot of
frustration if they aren't used in the layout they are expected in.
2021-09-14 20:16:55 -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
b51ec756de
widgets: simplify layouts
Simplify the layouts used by widgets, moving the more version-specific
attributes into settings.
2021-08-05 17:00:59 -06:00
OxygenCobalt
6f8f333b72
widgets: make widget responsive
The plans for widgets have changed somewhat. Instead of 4 or so
variants, there will instead be one unified widget that chooses
different layouts depending on its size. The first one added is the
full widget, which shows more controls as long as theres enough
space.
2021-08-05 10:22:41 -06:00
OxygenCobalt
8673995630
widgets: backport to <v31
Modify the minimal wdiget so that it can work on Android 11 and below.
Was not actually that hard, mostly changing layouts around all things
considered. This also splits up the default view and the main widget
views, which makes managing UI state much easier.
2021-08-02 08:57:35 -06:00
OxygenCobalt
d50d2f0b1e
ui: fix binding issues
Use viewLifecycleOwner for all fragments that rely on databinding. This
should solve some possible memory leaks, as viewLifecycleOwner is tied
to the lifecycle of the fragment views instead of the fragments them
selves.
2021-08-01 17:59:12 -06:00
OxygenCobalt
66be3da7e3
widgets: add minimal widget [#8]
Add the first widget implementation, the minimal widget. This took a
good 2 days of hacking and frustration to get the first prototype
working. And even then, its currently scoped to android 12 until I'm
able to port them. The implementation is still quite rough, but should
become manageable over time. More widgets will come.
2021-08-01 17:32:38 -06:00
OxygenCobalt
f1f2fcf41d
meta: remove access_network_state perm [#22]
ExoPlayer's online functionality will cause the library to request the
ACCESS_NETWORK_STATE permission. We don't need this since we use
ExoPlayer for local playback only. For simplicity [and to remove a
weird suspicious permission, we just disable it]
2021-07-02 08:32:38 -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
887868ff9c
Remove custom title UIs from dialogs
Replace the custom title TextViews in AccentDialog/BlacklistDialog with the built-in title text.
2021-04-04 09:46:58 -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
f1c40d2539
Add wakelock
Actually add a wakelock to the music load process to prevent it from stopping the CPU mid-load.
2021-03-21 11:12:48 -06:00