A modern MPD Client for Android.

Related tags

Utility dmix
Overview

MPDroid

MPDroid is a MPD client for Android. It is a fork of PMix.

You can browse your library, control the current song and playlist, manage your outputs, and stream music right to your mobile device. And all of this wrapped up in a beautiful modern Holo design!

What's not to like?

Now Playing/library Screenshot

Compatibility

MPDroid works on all devices from 4.0.3 (API 15) to 4.4+

Get it on F-Droid

Libraries

  • JMPDComm - The core MPD interface lib. Heavily modified.
  • DragSortListView - Really nice and widely used TouchInterceptor replacement.
  • ActionBar-PullToRefresh - Pull to refresh for library.

Known issues

  • Limited multi server support (based on WLAN name)

Roadmap

New features will most likely be delayed. MPDroid is, in my opinion, almost fully-featured and pushes (hits) MPD's API limits. Widely requested features (like better search, better library browsing) can't be done without duplicating MPD's database locally. This is a huge project, and it will take a lot of time (if ever done).

Also, MPDroid's speed isn't that great, but considering that MPD's API was never made for 3G (read crappy) connections, it is also not that bad.

So, the current roadmap is:

####1.1

  • Make MPDroid configurable for multiple servers (Better implementation than the hackish WLAN based one)
  • Add Bonjour support
  • Rework Streams storage
  • Split album details by CD and allow only one CD to be added to the playlist

Donations

Since MPDroid is a fork of dmix and that a lot of people helped me with some huge patches (see special thanks), I don't really believe it would be ethical to accept donations.

If you still want to donate, I have a PayPal address at [email protected], you can send how much you want to it :)

Please consider donating to some of the developers down there :)

Special thanks

Obviously, PMix for their work on the original application. There is not much of PMix left, but their core code is still here.

Everybody who blogged about MPDroid, allowing it to gain a large user base. Mopidy, for working with me on the search support.

Developers

There are a lot of people here. Developers who crossed my path now and then, working on MPDroid and fixing some things. This project wouldn't be the same without you!

Kent Gustavsson - Cleaned up a lot of PMix's old bugged core and polished the interface. Huge refactoring work on the activities.

Phil Chandler - Various fixes and improvements to internal stuff. Added more options to the way it handles the library.

Guillaume Revaillot - Tablet layout work

Andrew Blackburn - Various stuff, suggestions and layout work

Stefan Richter - Refactoring and … Widget ! I was really too lazy about this one, and it was a much requested feature. Also added a way to build MPDroid from the command line, which I didn't even try.

Matt Black - Also worked on ant building. Reported a log of bugs/improvement suggestions. We may not agree on everything but it's been useful!

Craig Drummond - Helped me integrate new features while cleaning up old internal code that I did not really wanted to change. Lots of new interface code and feedback on my experimentations while reworking the whole interface.

jcnoir - Contributor. Reworked cover art support, and many other improvements.

hurzl - MPD Backend improvement (cached MPD), various tweaks and bug fixes.

Avuton Olrich - Behind the scenes fixes, cleanup and Git support.

Other patch submitters : Jörg Thalheim, Florian Weile, Daniel Schoepe, John Bäckstrand, ...

And if I forgot you… I'm sorry, it's kinda hard to remember everybody who worked on a 2 year old project, feel free to mail me :)

Thanks a lot guys!

Comments
  • Lost connection with MPD version > 0.18.x

    Lost connection with MPD version > 0.18.x

    I'm using the latest mpd versions 0.18.x and the latest git Version of MPDroid. I experienced two problems:

    (1) At the end of each song MPDroid looses the connection to MPD. The "lost connection" dialog appears. When clicking on "try again" it is working again.

    (2) Sometimes it is not possible to change the current song by clicking on a different one. Only a restart of MPDroid helps to accepts new commands. Possibly this is caused by a lost connection during song playback (which is not shown by the "lost connection" dialog).

    JMPDComm 
    opened by tangram67 161
  • Problem with MPDroid-beta and multi-album-artists

    Problem with MPDroid-beta and multi-album-artists

    Albums with more than one "Artist" behave very well in MPDroid - they appear under the different artists as they should. But when i use more than one "Album-Artist" the behaviour gets strange when the specific tag for the artists-listing in the menu is chosen: The album with the (for example) 2 album-artists is showed for both of the artists as ist should, but not once but twice. One time for each artist, but under the wrong artist. An example: I have an album with Eric Clapton and B.B. King as 2 "Album Artist". When i now choose Eric Clapton in the library, there are 2 similar albums. When i change the specific tag for the artists-listing in the menu from "Album Artist" to "Artist", the behaviour is the same (I have the same value for "artist" and "album artist"). But when i eliminate the "album artist"-tag in the tracks, the behaviour is normal again.

    Library 
    opened by MPconta 78
  • [Important Announcement] MPDroid about to be pulled from Play Store

    [Important Announcement] MPDroid about to be pulled from Play Store

    UPDATE : MPDroid stays, thanks ! Please check my final answer

    Hi,

    Today, MPDroid got threatened of removal by Google.
    I tried to appeal, but it got denied and MPDroid will probably be removed from the Play Store soon(ish).

    Appeal email

    Since it's still on the store, I pushed 1.07 Final. It's a release that I'm proud of, because it's the first stable release in a year. I want to use this space to say thank you to all contributors. Especially to @avuton , who has been doing a crazy work inside JMPDComm.

    Anyway, 1.07 Final contains a small nag (only shown once), to warn Play Store users of what is happening.

    Nag 1 Nag2

    I also reached out to F-Droid to try to get 1.07 updated there too. APKs are still downloadable here, and the project will remain open source. It's something I strongly believe in, even more tonight.

    I'm still unsure about what the next steps are for us, or where the project will go. We barely released new versions, so after all it does not change much.

    If you are curious, I've written a post about this : http://nlss.fr/mpdroid/

    Thanks for reading!

    opened by abarisain 50
  • Same-named albums from different artists are confused with each other

    Same-named albums from different artists are confused with each other

    When having the albums:

    Aphex Twin -- Classics
    Ratatat -- Classics
    

    Going to the album listing for Aphex Twin and doing "Add, Replace and Play" for his Classics album will also add titles from Ratatat's album. Similarly, albumart from Ratatat's album is shown on titles from Aphex Twin (using a local webserver for albumart)

    opened by untitaker 49
  • Sort albums by year, performance issue

    Sort albums by year, performance issue

    Hello, I've got a few artists with more than a hundred albums in my library, mostly kid's stuff. If the settings option to sort by year is NOT activated, it takes only one second to show all of the artist's albums when the artist has been selected. If the option is activated, it merely takes forever for the albums to be shown. Exactly, for 107 albums it took 1:50 minutes to load the album view. Cover art had not even been activated. Regards Thorsten

    opened by tkone 45
  • Max connections reached (69c7fc1ee6)

    Max connections reached (69c7fc1ee6)

    Hello,

    Using my nightly build for commit (69c7fc1ee6) I was listening to MPD, using MPDroid ~~exclusively (no other clients anywhere on my network)~~ along with mpdscribble, I pause and come back around 5 minutes later to resume play, hit play and nothing happens. I think I hit it again, nothing. Check logs and the dreaded 'Max Connections Reached'. With that said, I have the default connection limits set (10) so I'm afraid we have a connection leak ;). At any rate, here's a subset of my logs. These logs were tac'd and seded (to remove password) and probably includes too much information, but feel free to grep it as necessary.

    Full log: http://anpmech.com:8080/mpd.log

    Dec 24 07:11:55 sulu mpd: client: Max connections reached
    Dec 24 07:11:55 sulu mpd: client: Max connections reached
    Dec 24 07:11:34 sulu mpd: client: Max connections reached
    Dec 24 07:11:33 sulu mpd: client: Max connections reached
    Dec 24 07:11:32 sulu mpd: client: [318] command returned 1
    Dec 24 07:11:32 sulu mpd: client: [318] process command "idle"
    Dec 24 07:11:32 sulu mpd: client: [323] command returned 0
    Dec 24 07:11:32 sulu mpd: client: [323] process command "plchanges "-1""
    Dec 24 07:11:32 sulu mpd: client: [323] command returned 0
    Dec 24 07:11:32 sulu mpd: client: [323] process command "password ""
    Dec 24 07:11:32 sulu mpd: client: [323] opened from 10.0.0.11:48250
    Dec 24 07:11:32 sulu mpd: client: [321] command returned 0
    Dec 24 07:11:32 sulu mpd: client: [321] process command "status"
    Dec 24 07:11:32 sulu mpd: client: [322] command returned 0
    Dec 24 07:11:32 sulu mpd: client: [322] process command "stats"
    Dec 24 07:11:32 sulu mpd: client: [322] command returned 0
    Dec 24 07:11:32 sulu mpd: client: [322] process command "password ""
    Dec 24 07:11:32 sulu mpd: client: [322] opened from 10.0.0.11:48249
    Dec 24 07:11:32 sulu mpd: client: [314] closed
    
    opened by avuton 45
  • Easy way to add whole CD's to the playlist

    Easy way to add whole CD's to the playlist

    Well it's possibly a kind of egoistic wish... :-)

    When i found the right CD in the library, i have a very small button to get a list of 4 actions. And one of them is "add, replace and play-back". I don't know if i am the only one, but i take always this button. Would it be possible to make this button better reachable, because it is the most important of them, at least to my opinion?

    opened by MPconta 44
  • can't connect with MpD after last update (11 january 2014)

    can't connect with MpD after last update (11 january 2014)

    Hi, after last update of app (11 genuary) i can't connect via WiFi. I didn't change any of the default setting neither in the smartphone and in the MPD or Voyage on the computer. When i try to connect with the smartphone i got this error message: "Connection to MPD-Server failed! Ceck if server is running and reachable. (org.a0z.mpd.exception. MPDServerException: java.util.concurrent.ExecutionException: java.lang.StackOveflowError)"

    Anybody understand what happen? Thank you!

    Regression Exception 
    opened by andreainno 44
  • Navigation Drawer ui bugs

    Navigation Drawer ui bugs

    Some bugs have appeared with the introduction of the new navigation drawer ui :

    • Songs in the play queue are really, really hard to reorder. the hitbox needs to be tweaked
    • When going back to the library from another tab, the navigation state will be lost (this is a bug caused by a feature allowing you to go back to the library root easily)

    Not a bug but I really think that the swipe left<>right for moving between now playing and the queue will be missed.

    opened by abarisain 43
  • Some cover searches are triggered only when in NowPlaying

    Some cover searches are triggered only when in NowPlaying

    Cover Search is not triggered in Albums of Artist list or in AlbumFragment, only when added to playlist and shown in NowPlaying

    I have to examine the circumstances ...

    opened by hurzl 41
  • Volume bar remove when MPD get volume returns -1 (no volume control)

    Volume bar remove when MPD get volume returns -1 (no volume control)

    Hi

    He's a small submit to remove the volume bar when MPD server returns -1 on call to get volume. This indicates that the output device does not have a volume control, for instance optical output. The volume bar in this instances is useless to the user and performs not function and is slightly confusing to the user. Therefore we can detect this condition from the getVolume() and hide and disable the UI volume control.

    Note: I've not tested with a MPD server that the output does support control of volume on the output device.

    Phil

    some of the white space got changed in the process, I'm not sure how or why, but have corrected most that I can see

    opened by philchand 40
  • Improve GRADLE Compile Performance

    Improve GRADLE Compile Performance

    Incremental compilation. Gradle recompile only the classes that were affected by a change. This feature is the default since Gradle 4.10. For an older versions, we can activate it by setting options.incremental = true.

    ===================== If there are any inappropriate modifications in this PR, please give me a reply and I will change them.

    opened by ChenZhangg 0
  • Reduce GRADLE Test time

    Reduce GRADLE Test time

    Process forking options. Gradle will run all tests in a single forked VM by default. This can be problematic if there are a lot of tests or some very memory-hungry ones. We can fork a new test VM after a certain number of tests have run by setting forkEvery.

    ===================== If there are any inappropriate modifications in this PR, please give me a reply and I will change them.

    opened by ChenZhangg 0
  • Feature request: Shuffle playlist

    Feature request: Shuffle playlist

    Ability to shuffle the playlist. I believe this is a natively supported command in the mpd protocol.

    I'd like to have a shuffled playlist while keeping the ability to move an arbitrary song to play next, which seems unlikely to work with the randomized play order.

    opened by Zash 0
  • Improve GRADLE build Performance

    Improve GRADLE build Performance

    Parallel test execution maxParallelForks. Gradle can run multiple test cases in parallel by setting maxParallelForks.

    Disable report generation. We can conditionally disable it by setting reports.html.required = false; reports.junitXml.required = false. If you need to generate reports, add -PcreateReports to the end of Gradle's build command line.

    ===================== If there are any inappropriate modifications in this PR, please give me a reply and I will change them.

    opened by ChenZhangg 0
  • New modern GUI topic

    New modern GUI topic

    Android GUIs are moving back to the bottom navigation buttons like Apple uses. It turns out that function beats style when it comes to functions you use all the time. I've been trying to find an openhome/mpd controller which uses a clear, simple, modern interface because my senior parents can't fathom anything else.

    I was thinking of doing a web app on my own, then I thought maybe I could modify an existing native app. Then I found your app and I thought I could just put it to you: do you want to have a discussion about the GUI? What's your interest level for updating the app to the latest android version standards?

    opened by ibex-are-goats 2
Releases(1_08_b2)
Owner
Arnaud Barisain-Monrose
Arnaud Barisain-Monrose
A modern Wadler/Leijen Prettyprinter

Kotlin port of the Haskell prettyprinter library.

Ben Samuel 2 Dec 14, 2022
Android tiny device flow client

OAuth 2.0 Device Flow Example Setup Create an Auth0 application Enable Device Code Grants in Advanced settings Disable Client Credentials Enable Devic

Kenji Saito 0 May 15, 2022
Bar Service Kotlin Client

A simple starter service client written in Kotlin against generated models (protos)A simple starter service client written in Kotlin against generated models (protos)

Logesh Dinakaran 0 Nov 9, 2021
POC Simulate Backend Biometric Authentication with AIDL (client app/server app)

poc-simulate-bio-auth-aidl POC Simulate Backend Biometric Authentication with AIDL (client app/server app) #How to use Install server app and run Inst

gundamD 0 Dec 30, 2021
DEMOMovieDB - Client App using movieDB with Kotlin

DEMOMovieDB DEMOMovieDB is a gorgeous client application for TMDb on Android, bu

null 0 Feb 15, 2022
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Gesture detector framework for multitouch handling on Android, based on Android's ScaleGestureDetector

Android Gesture Detectors Framework Introduction Since I was amazed Android has a ScaleGestureDetector since API level 8 but (still) no such thing as

null 1.1k Nov 30, 2022
Use Android as Rubber Ducky against another Android device

Use Android as Rubber Ducky against another Android device

null 1.4k Jan 9, 2023
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 6, 2023
A logger with a small, extensible API which provides utility on top of Android's normal Log class.

This is a logger with a small, extensible API which provides utility on top of Android's normal Log class. I copy this class into all the little apps

Jake Wharton 9.8k Dec 30, 2022
Java implementation of a Disk-based LRU cache which specifically targets Android compatibility.

Disk LRU Cache A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key and a fixed number of values. Each key m

Jake Wharton 5.7k Dec 31, 2022
a simple cache for android and java

ASimpleCache ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。 1、它可以缓存什么东西? 普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 b

Michael Yang 3.7k Dec 14, 2022
gRPC and protocol buffers for Android, Kotlin, and Java.

Wire “A man got to have a code!” - Omar Little See the project website for documentation and APIs. As our teams and programs grow, the variety and vol

Square 3.9k Dec 31, 2022
✔️ Secure, simple key-value storage for Android

Hawk 2.0 Secure, simple key-value storage for android Important Note This version has no backward compatibility with Hawk 1+ versions. If you still wa

Orhan Obut 3.9k Dec 20, 2022
A robust native library loader for Android.

ReLinker A robust native library loader for Android. More information can be found in our blog post Min SDK: 9 JavaDoc Overview The Android PackageMan

Keepsafe 2.9k Dec 27, 2022
A lightning fast, transactional, file-based FIFO for Android and Java.

Tape by Square, Inc. Tape is a collection of queue-related classes for Android and Java. QueueFile is a lightning-fast, transactional, file-based FIFO

Square 2.4k Dec 30, 2022
Joda-Time library with Android specialization

joda-time-android This library is a version of Joda-Time built with Android in mind. Why Joda-Time? Android has built-in date and time handling - why

Daniel Lew 2.6k Dec 9, 2022