Components

MprisD
The GNU/Linux Server
Amp.Ris
The Android Client
Common
The Components They Use To Interact
Patches
Patches required for dbus-java to function correctly
Javadoc
Javadoc documentation for the project

Marking

Apart from minor tweaks to some generated files elsewhere, the below directories contain all of my work. There are quite a few image resources bundled in the compiled and packaged APK, these were obtained from Android Developer Downloads.

Building

I didn't spend much time on a complicated build system. The ant build present is based on that generated by IntelliJ with a few minor tweaks to get the nested Android project to build using it's own configuration.

In a nutshell, typing ant clean or ant build should do what you'd expect from them. After which all output will be in the project output directory. For this to work, Jar files of google-gson, avahi4j, dbus-java and jmdns must be present in the appropriate directories. If your system is 64 bit, then you should be able to use the ones I've prepared, otherwise you'll need to build or obtain versions to link against. Of course, an Android SDK with API 16 installed must be present for building Amp.Ris, see the local.properties file to configure this.

I had trouble with the latest stable version of JmDNS, version 3.4.1. Therefore building against trunk is recommended.

If rolling your own dbus-java then take note of the patches directory. They are required for property extraction in the server. Both should apply cleanly to dbus-java 2.7.

Running the Server

At runtime, you will require libmatthew-java. All other requirements, dbus-java, gson and avahi4j are included as built upon a 64 bit system with Oracle JDK 1.7. Starting the server involves a command such as this:

$ PROJECT_DIR=.
$ LIBMATTHEW=/usr/lib64/libmatthew-java
$ java \
-Djava.library.path="$PROJECT_DIR/MprisD/libs:$LIBMATTHEW" \
-classpath "$PROJECT_DIR/out/production/MprisD:$PROJECT_DIR/out/production/Common:$PROJECT_DIR/MprisD/libs/*:$PROJECT_DIR/libs/*" \
little.nj.Main

Alternatively, modify and execute daemon.sh.