abarisain / dmix Goto Github PK
View Code? Open in Web Editor NEWA modern MPD Client for Android.
License: Apache License 2.0
A modern MPD Client for Android.
License: Apache License 2.0
As subject: probably should use Album Artist for album art download, esp when the "Album Artist" option is selected.
I have some CDs tagged with MusicBrainz that have elaborate artist info (XX feat YY) which breaks album art on some of the tracks, I'm guessing this is why.
Brilliant app, thanks for the work.
The title is self explanatory
Hi again,
I got another idea for MPDroid.
If you want to manage/use streaming of multiple servers, it can really become a pain to always edit servers configuration.
There could be an editable list of servers configuration so we can easily switch between them without always editing hosts and ports fields.
Something like a Spinner list should do the trick + actions inside options menu to add/remove/delete a server configuration
Hi,
When I'm connected by Wifi it's working great but when i try to connect by 3G with my domain name it's not working and give "Echec de la connexion" "Transport endpoint is not connected". And if I switch MPD Droid Client ( another app for mpd on android ) it's working.
I don't use default port for mpd and stream, but the host are the same.
Thank for this great apps by the way, good job.
I am able to reliably reproduce this with tracks with double-quotes in the title, which sometimes even causes the app to crash. In some cases commas seem to be breaking things, but it's not consistent. The one reliable example is an album with a comma in the title that is showing up twice in the album list, and neither shows any tracks. For albums with commas that only show up once, the track listing seems to work.
Some stuff needs to be cached. The iPhone client, MPoD goes as far as caching the whole library. With the recent performance boosts I don't think that it is THAT necessary anymore, but caching the last.fm covers could be really nice. There's a support for filesystem cache in the last.fm library, I think we should try to use it.
It would be useful to add "delete all" to the playlist editor. Currently it takes a long time to flag each track in a long list.
Hi,
Could you publish (or give a script which creates the apk from the source) regularly new apk files please ?
I don't use Google Market (I don't accept their licence agreement), and some alternative markets need .apk to propose software.
Hi
If you select a song from an album it's likely it will add the wrong song. This is because the album songs list (gui) is sorted in alphabetically, probably done by the gui class automatically. but the selection of a song results in a index number of the position the song is in the gui list, this index is used redirect on the internal song class (dispMusic.get()). Unfortunately because the gui has re-order the list the index number relation are no longer the same :-(
Easy kludge is to add a track number in front of the song title, so array index order is maintained, like so:
@@ -72,11 +72,13 @@ public class SongsActivity extends BrowseActivity { MPDApplication app = (MPDApplication) getApplication(); dispMusic = new ArrayList(app.oMPDAsyncHelper.oMPD.find(MPD.MPD_FIND_ALBUM, album)); } catch (MPDServerException e) { } + int tn = 1; //Track number may not be populated for (Music music : dispMusic) { - items.add(music.getTitle()); + items.add(String.format("%02d", tn) + " " + music.getTitle()); + tn++; } } }
This seems to work and does not add any overhead to the app, and personally I can live with the track number for the moment.
Obviously the correct way is to use the "title" of the selected song to find it in the array, but there are problems with songs with duplicate names, and how to differentiate between them.
Regard
Phil
If a song has an Artist but no Album set, the artist will show up in the library but when clicking it you will get nothing because there is no album listed under that artist.
If settings are changed after the initial connection, they will not be applied until the app is restarted.
In playlist view it would be nice if it automatically would show the current song. Furthermore a click on "Now Playing" should jump to the current song, too. BitMPC does it this way.
And could the current song be better highlighted? The small play symbol is easily overseen.
Sometimes when a rotation occurs or when the user switches to another app and comes back to MPDroid, the current song info is lost.
Changing the song refreshes the info until it gets lost again.
Many parts of the program are NOT backgrounded. (As in, almost every context menu and the update() function of the main activity) Since mpdroid needs to work over 3G (which pmix didn't care about), backgrounding needs to be setup (with "Loading ..." popups or not).
I think that it implies wrapping a lot of stuff into AsyncHelpers
When connection is lost for X/Y reason (mostly 3G), the stream doesn't restart but service remains enabled, which kills the battery.
While I can save my playlist, trying to load one is impossible as the list is always empty.
When rotating in the library view, application sometimes crash.
According to the stack trace, the async task succeeds after the View has been freed (a new view has been created since the device rotated)
I hate rotation :D
User message :
You fail, dreamteam. Death by screen rotation. <3
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at com.namelessdev.mpdroid.ArtistsActivity.OnArtistsLoaded(ArtistsActivity.java:131)
at com.namelessdev.mpdroid.ArtistsActivity.asyncExecSucceeded(ArtistsActivity.java:91)
at com.namelessdev.mpdroid.MPDAsyncHelper.handleMessage(MPDAsyncHelper.java:160)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
hi,
Do I suppost to hear sound from my Android than song is playing?
As seems, that I cant control volume , and no sound from my android
Im not 100% sure this is a mpdroid bug, but mopidy refuses to start playing after I select a playlist (add and replace) and then simply click play. This sends a "play" command to mopidy without id, but the spec says this:
play [SONGPOS]
Begins playing the playlist at song number SONGPOS.
Implying you need to send the id.
MPDroid doesn't honor the port configuration.
edit: solved, see below
Hi
I get the following error when trying to connect MPDroid to MPD:
"Connection to MPD-Server failed! Check if the Server is runnning and reachable. (Transport endpoint is not connected)"
I installed MPDroid on an HTC Desire. MPD is running on ubuntustudio and is working correctly when using Gnome Music Player Client locally.
It is listening on port 6600:
netstat -an | grep "LISTEN "
gives:
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4025 0.0.0.0:* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::6600 :::* LISTEN
The phone is connected via wlan to the network. It receives an IP from the router (in the same subnet as the ubuntu computer). I can access internet, so the network seems to be working correctly.
In MPDroid config I use the ubuntu computer's IP and port 6600.
In mpd.conf I have
bind_to_address "any"
I can also enter the phone's IP, id does not change anything.
What am I doing wrong, can somebody please help me?
Ok, it was a firewall issue. The command
sudo iptables -A INPUT -p tcp -d 0/0 -s 0/0 --dport 6600 -j ACCEPT
solved the problem.
MPDroid could connect immediately afterwards.
This is a really great program! Many thanks to the author.
Hi. thank you for this software, now i can get rid of ampache from my server which i had installed for just this reason.
In any case I spent some time troubleshooting a small problem with streaming. it appears my phone keyboard added a space to the end of the ip address, so consequently it streaming failed. It would be nice if whitespace was stripped from the ip and port fields just in case.
thanks again
-Jason
My MPD server streams to an icecast server where the IP address, port, and URL are all custom, so the "Streaming Port" is inadequate. Further, I saw your commit allowing to also edit the IP address; this is still inadequate because you don't provide the chance to give the mount name.
The full path of the URL for the stream for me is something like http://example.com:12345/stream.mp3
where "example.com" is different from the IP/domain name of the MPD server, "12345" is different from the MPD port, and "/stream.mp3" is a required URL component that cannot currently be entered with mpdroid at all because the URL suffix is hard-coded as "/" in StreamingService.java, line 243. This behavior will be inadequate for anyone who uses an Icecast server, because it requires you to define mount names like that. The document root doesn't lead anywhere.
I cooked up a patch in case you're interested, and it basically touches the same things as your commit that adds the "Stream Address" setting. But instead of adding a setting, I simply replaced the streamingPort setting with the streamURL setting. The streamURL setting is a user-defined String that is meant to contain a well-formed HTTP URL to the stream. The software is capable of streaming from an arbitrary HTTP URL that yields an audio stream in a supported format, so I don't see why this won't work. I tested my code on an API 8 device, Motorola Droid 2, and it works fine. Let me know if you're interested, though the patch is quite trivial (replace streamingPort with streamURL, and change data type from int to String; remove the Integer.parseInt in MPDApplication.java, edit strings.xml, etc.)
if there are two albums that have the same name from different artists and one goes from the Artist tab in the library to the albums and add the one that has a double both are going to be added.
I haven't been able to try this but from the code this is what should happen and it doesn't feel right.
The WLAN connection always seams to overrule the Default connection, even when one can not reach the WLAN in question. Removing the host/IP on the WLAN makes connection through the default connection possible again.
Sometimes when a network error occurs, the application becomes unstable and will eventually crash.
I'd like to test the latest development version. But I could not find out how to build an App out of the code in git. Maybe a wiki page could provide a little howto or point to external docs.
Also what additional software do I need? Android Development Kit?
IMHO this could help to attract more beta tester. At least me :)
"mainMenu" in Option key menu from Playlist screen is not translated in my locale (fr.BE). Don't know if it's the case in other languages.
I have some playlists that have colons in their names, e.g. "Favourites: XX" and "Favourites: YY". They show fine in other clients but MPDroid cuts at the colon, showing two "Favourites" playlists which are unusable (appear empty).
When I enable a password in mpd.conf, it works with all my clients (using ario for example), except mpdroid (dmix) or pmix. I specify the right password, but it cannot connect, nothing happens, and in tcpdump or wireshark, I can see the error message "{status} you don't have permission for "status".
I use the last apk (which is old) : MPDroid_24070212.apk.
Could you generate a new one please in download section ?
Hi,
when I'm listening to music on my couch I'm often interested in the song lyrics. So some button that automatically searches for >"artist name" "song name" lyrics< on Google would be nice.
Hi,
Just like previous feature request about wifi automatic disabling, why not also implement an option preventing the screen from shutting down?
I expect it to work that way :
Setting name : "Prevent the screen from shutting down"
Settings possibles :
I have a server running 4 instances of MPD on different ports, including various HTTP streams on different ports. When I try to connect to any of the instances running on the non-default ports MPDroid will just connect to the instance on the default port.
So, for example, I'll set MPDroid to connect to port 6601 for MPD and 8001 for HTTP, when I go to control or stream from the server I am connected to the instance on port 6600 and 8000. Restarting MPDroid does nothing, I tried connecting to the stream individually with the android music player and it works fine, as does connecting to the MPD instances with other Droid and desktop clients, so the server configuration is correct.
Currently, MPDroid does not remember position in the playlist, so scrolling to go to the previous position is necessary.
Steps to reproduce:
Current behaviour:
Expected behaviour:
I know you're busy, so I'll just throw this out there :)
Hi,
I have configured my MPD Server only to output using streaming. But sometimes I think it switches back to its main purpose, which is using MPDroid as a remote to play a sound where the MPD Server runs.
But I think it would be nice to force MPDroid using streaming (in an option for example), so there is no more need to go to Options key -> Streaming again to get streaming back. (For the moment, I only use MPDroid for this purpose)
When using MPDroid for some time, my MPD server becomes unavailable because the max number of connections is reached.
It seems MPDroid does not close its connections.
It could be related to the wifi problems on the Nexus One (wifi dropping when idle) but it could help to have an option to close connection when we quite the app
To enhance the user experience, a search function should be added to the library. mpd provides a search API.
The search could be...
It's almost all said in the title. Either add a popup at the application start or a opt-out setting.
whether or not it actually does reconnect, it's strange to see it show "connecting" just because the phone orientation changed
I have recently started using MPDroid with Vortexbox and really like it. I am not seeing my album artwork yet. Is this because you are using an internet service? It would be much preferred to display local album artwork. It would be more reliable and show what I want. Additionally it would eliminate the 3G overhead. Can that option be added? Please see the thread at Vortexbox: http://vortexbox.org/forum/vortexbox-player/better-mpod-and-mpad-support/
I've got the "Sort Album by track number" preference turned on, and while it does make it so that the tracks are no longer sorted alphabetically, the tracks are not sorted properly by track numbe when there are more than 9 tracks on an album. When there are 10 or more tracks, they are sorted as follows:
Track #:
1
10
11
2
3
4
etc
This seems to be a problem with MPDroid and not mpd or the tags in the files; I've checked the mpd tag_cache and confirmed that the track numbers are correct, and I've also run other mpd clients and confirmed that they sort the tracks correctly.
Here's a real example:
Correct tracklisting for Artist: Liars, Album: Liars (and the order in tag_cache as well):
1 - Plaster Casts of Everything
2 - Houseclouds
3 - Leather Prowler
4 - Sailing to Byzantium
5 - What Would they Know
6 - Cycle Time
7 - Freak Out
8 - Pure Unevil
9 - Clear Island
10 - The Dumb in the Rain
11 - Protection
Sort order in MPDroid:
Plaster Casts of Everything
The Dumb in the Rain
Protection
Houseclouds
Leather Prowler
Sailing to Byzantium
What Would they Know
Cycle Time
Freak Out
Pure Unevil
Clear Island
Please let me know if you need any other info.
When the song is paused, the MPD streaming service stops, showing the message "MPD Streaming Disabled".
This bug doesn't occur on 2.2 or when the song is paused using a remote (bluetooth/headset).
There should be an option preventing the wifi from going to sleep mode when songs are playing via streaming.
An A-Z browser on top or on the right side of the song library lists would enhance user experience a lot. Especially when you have very long lists.
For an example, have a look at the Android contacts app.
The new UI is not yet ready in landscape and for mdpi devices.
I want to release another version and get some feedback before I work too much on something people don't like.
I think a setting should be added so the users can rollback to the "old" UI in the meantime.
Currently only httpd method of MPD is supported, there is other one: through icecast. Could it be possible to include support for it?
Playing through icecast is more attractive because there are two processes: one for control and playing, the other one for outputting.
I would love to use MPDroid on a tablet and it would be ideal to to have to a side-by-side layout which would allow the controls and song queue to be always be visible while you browse the library. I would imagine something like this:
Controls + Cover art | Library |
Now Playing (queue) |
I think you could perhaps use the recently released Fragments API (backported to 1.6+) to achieve this while simply using the existing activities (http://android-developers.blogspot.com/2011/03/fragments-for-all.html).
The streaming feature seems to support only mp3 and doesn't warn the user when encountering an unsupported format (ogg, in this case) and only says it is buffering.
If I am not mistaken, in distributions like Debian, mpd is not compiled with mp3 streaming support, so I think you should put a warning or explain somewhere which format is supported.
Other than that, great app. The streaming feature is what is missing every mpd client.
Keep up the good work.
Some stuff needs to be cached. The iPhone client, MPoD goes as far as caching the whole library. With the recent performance boosts I don't think that it is THAT necessary anymore, but caching the last.fm covers could be really nice. There's a support for filesystem cache in the last.fm library, I think we should try to use it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.