Commit Graph

25 Commits

Author SHA1 Message Date
Colin Edwards a0e9dfbec2 android: null check intent in onStartCommand
For some reason the type annotations here show @NonNull but that is
actually false according to the documentation under service.

This may be null if the service is being restarted after its process has gone away, and it had previously returned anything except START_STICKY_COMPATIBILITY.
2024-04-23 00:24:32 -05:00
Max Kellermann cd3c34e7b9 Merge branch 'intents' of https://github.com/DDRBoxman/MPD 2024-04-08 08:23:25 +02:00
Colin Edwards b0cd456753 android: Button to jump to bottom of log view
This adds a button that can jump to the bottom of the log view.
If the user scrolls up we now disable the auto scroll down and show the
down button. When the down button is clicked the auto scroll resumes and
the button is removed.
2024-04-06 20:11:01 -05:00
Colin Edwards fff9ceccc2 android: Add intents for service start and stop
org.musicpd.action.StartService
org.musicpd.action.StopService

You can test these actions like:
adb shell am broadcast -a org.musicpd.action.StartService org.musicpd

Calling these from an app like tasker should allow for automation
2024-04-05 23:46:14 -05:00
Colin Edwards 4bcbeae1e0 android: Move service client into it's own file
The service file was getting harder to read so lets pull the client code
into it's own file
2024-04-05 23:27:41 -05:00
Max Kellermann 7a40ac52a8 Merge branch 'bottombar' of https://github.com/DDRBoxman/MPD 2024-01-18 09:59:48 +01:00
Colin Edwards 5b7de2bc2f android: Refactor settings UI into screens and add a bottom bar.
This puts Status, logs, and settings all on different tabs. This gives us plenty more room to work to improve these views going forward
2024-01-18 01:23:31 -06:00
Colin Edwards 87873c9a73 android: Support play / pause from media session 2024-01-13 23:15:56 -06:00
Max Kellermann 3e862b85d4 Merge branch 'mediasession' of https://github.com/DDRBoxman/MPD 2024-01-13 22:27:00 +01:00
Colin Edwards 3711bd0d24 android: Implement basic media session handling for next and previous track
This starts a Media3 MediaSession when the service starts. A custom player class gets passed into that session to receive commands from other apps and the android os.

Currently we pad out some dummy items to make SimpleBasePlayer think we can do next and previous tracks.

MPD handles the threading for the native calls so we can just directly call the bridge from the player class.
2024-01-05 18:23:16 -06:00
Colin Edwards e086f09d48 android: add next and previous track to the jni bridge
This will allow the android client to directly make calls to the mpd process to change tracks

I went with camel case on the function names here, if you use an underscore
javac generates a function tht looks like this:
 JNIEXPORT void JNICALL Java_org_musicpd_Bridge_play_1previous

I figured what we ended up with looks a little nicer:
JNIEXPORT void JNICALL Java_org_musicpd_Bridge_playPrevious
2024-01-05 18:21:46 -06:00
Colin Edwards 324bd95c91 android: Move logging into it's own repository class.
Logs will be maintained and appended even when the main UI is not bound to the service.

This also lets us log without filling a Handler with a bunch of messages we might just throw away anyway.
2024-01-04 17:44:49 -06:00
Colin Edwards 5d122c3bc8 android: Add dependencies and new application class for dagger / hilt support
Dagger and hilt give us dependency injection which makes it easier to split up parts of the app. This lets us easily split out things like logging and paves the way to migrate off preferences to DataStore

This also remove the process name on the service to pull eveything into one process so we don't have to do IPC to pass logs around. This lets us use the same instances of injected classes between the UI and the service side.
2024-01-04 17:44:43 -06:00
Colin Edwards 201e081750 android: Fix boot receiver settings and intent check 2023-12-27 13:38:38 -06:00
Colin Edwards 5f7f1d738d android: set kotlin target to 9
The naming scheme was changed in kotlin but not java after java 8
2023-12-27 13:34:37 -06:00
Colin Edwards 8a3d144714 android: Set kotlin jvm target to 1.9 2023-12-27 13:27:02 -06:00
Max Kellermann 658a7f1ca7 Merge branch 'material' of https://github.com/DDRBoxman/MPD 2023-12-27 12:35:13 +01:00
Colin Edwards ddc048e2c3 android: Move settings to compose and material UI 3
This changes lets us use the latest UI design from Google, Material 3.

Google only provides the material UI 3 themes for compose, compose only works with kotlin.
2023-12-22 23:04:51 -06:00
Colin Edwards 625ab6decd android: Move preferences class out of settings 2023-12-22 22:51:14 -06:00
Colin Edwards 2638396df5 android: add dependencies for Material 3 and Compose 2023-12-22 13:30:43 -06:00
Colin Edwards 3d8e285e2b android: Fix launching on device boot 2023-12-22 12:30:45 -06:00
Colin Edwards 793a12d58d android: Use Java 9 2023-12-22 12:30:27 -06:00
Colin Edwards c4c1044427 android: Add a text field to display the devices network address 2023-12-21 11:50:10 -06:00
Colin Edwards 80bb5a0542 android: Add github action
This lives under a separate workflow so it can have different ignore paths.
2023-12-19 17:25:25 -06:00
Colin Edwards 906d58a918 android: migrate app build system to use gradle
Most of the Android specific meson code has been removed and replaced with
the grade build system.

The new meson build scripts build and move the libmpd.so binaries into the correct
location that gradle expects. After than gradle handles building the rest of the Android app.

Icons and banners have been updated for the modern app packaging expectations.

For reference here was the figma template Google provides that I used to back the png versions
for older versions of Android <https://www.figma.com/community/file/1283953738855070149>
2023-12-17 22:38:34 -06:00