MCPcopy Index your code
hub / github.com/abarisain/dmix

github.com/abarisain/dmix @1.07

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.07 ↗ · + Follow
1,715 symbols 5,135 edges 142 files 554 documented · 32%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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+

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 dreamteam69@gmail.com, 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!

Extension points exported contracts — how you extend this code

TrackPositionListener (Interface)
Represents a change in current playing track position on MPD server. [6 implementers]
JMPDComm/src/main/java/org/a0z/mpd/event/TrackPositionListener.java
CoverDownloadListener (Interface)
(no doc) [6 implementers]
MPDroid/src/main/java/com/namelessdev/mpdroid/helpers/CoverDownloadListener.java
StatusChangeListener (Interface)
Implement this to get idle subsystem status updates. [15 implementers]
JMPDComm/src/main/java/org/a0z/mpd/event/StatusChangeListener.java
SeparatedListDataBinder (Interface)
(no doc) [9 implementers]
MPDroid/src/main/java/com/namelessdev/mpdroid/adapters/SeparatedListDataBinder.java
FilesystemTreeEntry (Interface)
(no doc) [6 implementers]
JMPDComm/src/main/java/org/a0z/mpd/item/FilesystemTreeEntry.java
ArrayDataBinder (Interface)
(no doc) [6 implementers]
MPDroid/src/main/java/com/namelessdev/mpdroid/adapters/ArrayDataBinder.java
ICoverRetriever (Interface)
(no doc) [5 implementers]
MPDroid/src/main/java/com/namelessdev/mpdroid/cover/ICoverRetriever.java
ILibraryFragmentActivity (Interface)
(no doc) [4 implementers]
MPDroid/src/main/java/com/namelessdev/mpdroid/library/ILibraryFragmentActivity.java

Core symbols most depended-on inside this repo

get
called by 99
MPDroid/src/main/java/com/namelessdev/mpdroid/tools/MultiMap.java
add
called by 78
MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/FSFragment.java
getName
called by 69
MPDroid/src/main/java/com/namelessdev/mpdroid/cover/ICoverRetriever.java
sendCommand
called by 67
JMPDComm/src/main/java/org/a0z/mpd/connection/MPDConnection.java
size
called by 65
MPDroid/src/main/java/com/namelessdev/mpdroid/tools/MultiMap.java
isEmpty
called by 59
MPDroid/src/main/java/com/namelessdev/mpdroid/tools/MultiMap.java
equals
called by 52
MPDroid/src/main/java/com/namelessdev/mpdroid/tools/MultiMap.java
size
called by 43
JMPDComm/src/main/java/org/a0z/mpd/MPDPlaylist.java

Shape

Method 1,529
Class 165
Interface 17
Enum 4

Languages

Java100%

Modules by API surface

JMPDComm/src/main/java/org/a0z/mpd/MPD.java79 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/NowPlayingFragment.java68 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/MainMenuActivity.java60 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/tools/WeakLinkedList.java50 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/service/MPDroidService.java47 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/helpers/CoverManager.java45 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/QueueFragment.java41 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/MPDApplication.java38 symbols
MPDroid/src/main/java/com/namelessdev/mpdroid/helpers/MPDAsyncHelper.java37 symbols
JMPDComm/src/main/java/org/a0z/mpd/item/Music.java37 symbols
JMPDComm/src/main/java/org/a0z/mpd/MPDStatus.java32 symbols
JMPDComm/src/main/java/org/a0z/mpd/connection/MPDConnection.java30 symbols

For agents

$ claude mcp add dmix \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page