Commit Graph

291 Commits

Author SHA1 Message Date
Colin Edwards 04ba7eb987 android: Use build tools and SDK 34
The gradle config for the app is already compiling with the 34 SDK
so lets bump it for the bridge build too
2024-01-17 23:55:01 -06:00
Colin Edwards 5a2267bdb4 Android: Look for license to verify Android SDK folder
The `android` command was depricated and has been removed from new installs of the sdk

The license file existing is about all that is stable between different sdk versions and
cli vs Android studio installs
2024-01-17 23:46:17 -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
Max Kellermann bd408cd627 Merge branch 'bootfix' of https://github.com/DDRBoxman/MPD 2023-12-27 12:33:14 +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
Max Kellermann c4d8888972 subprojects: add id3tag 2023-12-22 18:15:25 +01:00
Max Kellermann d9bbe39f48 android/include/meson.build: remove custom "-I" flag
This is not necessary because the declared dependency is enough for
Meson to generate the "-I" flag automatically.
2023-12-22 17:07:50 +01:00
Max Kellermann 38226dfe81 android/include/meson.build: generate *.class in @PRIVATE_DIR@
We're not interested in the *.class files, we run javac only to
generate the JNI header.  By using @PRIVATE_DIR@, it gets stored to a
directory we can ignore, and not into the source tree.
2023-12-22 16:46:25 +01:00
Max Kellermann 94ef1e13e0 android/include/meson.build: call javac directly, eliminate run-javac.sh 2023-12-22 16:41:35 +01:00
Max Kellermann 35c7c005ba android/meson.build: move target `org_musicpd_Bridge.h` to include/meson.build 2023-12-22 16:39:13 +01:00
Max Kellermann 1e732f9b9b android/run-javac.sh: remove unnecessary `realpath` call 2023-12-22 16:35:06 +01:00
Max Kellermann ee5c471280 android/meson.build: pass @OUTDIR@ to run-javac.sh 2023-12-22 16:32:10 +01:00
Colin Edwards c4c1044427 android: Add a text field to display the devices network address 2023-12-21 11:50:10 -06:00
Max Kellermann a4ead670ed subprojects: add libmpdclient wrap 2023-12-20 17:15:29 +01: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
Colin Edwards 8d6f503e04 android: require NDK r26b
This fixes `no member named 'invocable' in namespace 'std'`
2023-12-13 12:01:30 -06:00
Colin Edwards 3284a61f43 android: build with java 8 target
The latest Android `sdkmanager` tool requires a version of the jdk that no longer
supports Java 7 as a target
2023-12-13 11:50:21 -06:00
Colin Edwards 4c90ad3704 android: realdir doesn't accept nonexistant files on macOS 2023-12-13 11:47:18 -06:00
Colin Edwards 9059c6c657 android: find apksigner in build tools folder 2023-12-13 10:35:52 -06:00
Max Kellermann a6024f476a subprojects: add openssl 2023-12-11 11:01:32 +01:00
Max Kellermann dfef30a737 subprojects: add curl 2023-12-11 10:53:43 +01:00
Max Kellermann 55ca3709ef subprojects: add ogg, flac, opus 2023-12-11 10:53:43 +01:00
Max Kellermann 5ab2c31500 Merge branch 'v0.23.x' 2023-11-21 20:37:46 +01:00
Max Kellermann 7a939746ae increment version number to 0.23.15 2023-11-21 20:32:45 +01:00
Max Kellermann 39476bed85 Merge branch 'v0.23.x' 2023-09-26 15:36:26 +02:00
Max Kellermann 4669f7e2b9 {android,win32}/build.py: move Toolchain classes to python/build/toolchain.py 2023-09-26 12:47:02 +02:00
Max Kellermann 719333e16e android/build.py: move code to class AndroidNdkToolchain 2023-09-26 12:18:18 +02:00
Max Kellermann 100e471b49 android/build.py: remove duplicate import 2023-09-26 12:12:00 +02:00
Max Kellermann dd89ea4505 android/AndroidManifest.xml: raise minSdkVersion to 24
This is needed to build libFLAC which uses ftello().
2023-09-26 12:04:05 +02:00
Max Kellermann a868dbce3b android/AndroidManifest.xml: raise minSdkVersion to 24
This is needed to build libFLAC which uses ftello().
2023-09-11 22:14:23 +02:00
Max Kellermann 9c19368fc7 Merge branch 'v0.23.x' 2023-06-02 14:36:02 +02:00
Max Kellermann fc9626e2f4 increment version number to 0.23.14 2023-06-02 14:15:14 +02:00
Max Kellermann b09a54b2c2 python/build/autotools.py: use toolchain.arflags 2023-05-21 20:42:04 +02:00
Max Kellermann 148aca23be use SPDX IDs, replacing the long copyright headers 2023-03-06 14:59:48 +01:00
Max Kellermann 22eccaa64f python/build/autotools.py: use toolchain.arflags 2023-03-06 13:33:11 +01:00
Max Kellermann 3cc770a00b remove obsolete Boost dependency
Boost makes building a piece of software much more difficult than
necessary.  It's a huge library, and just uncompressing it takes a
considerable amount of time. MPD only used a tiny fraction of it, yet
its header bloat made the MPD build very slow.  Locating Boost was
difficult due to its arcane build system and its resistance to use
pkg-config; it's always a special case.  MPD could never use features
of newer Boost versions because Linux distributions always shipped old
Boost versions.  Boost made everything complicated and slow.

So, finally, after getting rid of GLib (commit ccdb94b06c), switching
to C++ and using Boost (commit 0801b3f495), we've finally get rid of
it 8 years later.

Unfortunately, I had to reimplement parts of it along the way
(e.g. IntrusiveList).  Kind of NIH, but on the other hand, compiling
MPD has become much easier for users.
2023-01-23 15:06:58 +01:00
Max Kellermann 8a7b7dffec Merge branch 'v0.23.x' 2023-01-06 08:12:38 +01:00