From 1b392679362b15d9c4c86f4edacd3752c2d3e149 Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Thu, 20 Nov 2014 16:31:50 -0800 Subject: [PATCH 01/13] dmix: iml updates for AS 1.0RC1 --- JMPDComm/backends/java/JMPDCommJava.iml | 6 +++--- dmix.iml | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/JMPDComm/backends/java/JMPDCommJava.iml b/JMPDComm/backends/java/JMPDCommJava.iml index 09f9ebccd1..50279647b9 100644 --- a/JMPDComm/backends/java/JMPDCommJava.iml +++ b/JMPDComm/backends/java/JMPDCommJava.iml @@ -18,8 +18,8 @@ + - @@ -27,9 +27,9 @@ - + - + diff --git a/dmix.iml b/dmix.iml index 0bb6048ae0..62553dc526 100644 --- a/dmix.iml +++ b/dmix.iml @@ -7,12 +7,14 @@ - + + + - + From 4b7c035c0003174f6cf5233516e054acd69152ba Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Fri, 21 Nov 2014 12:15:39 -0800 Subject: [PATCH 02/13] MPD: Fix (very) slow add. This fixes #635 using MPD's commands, if available. --- JMPDComm/src/main/java/org/a0z/mpd/MPD.java | 40 ++++++++++++++++--- .../src/main/java/org/a0z/mpd/MPDCommand.java | 6 +++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java index 7fab1c89b4..ce1b980d0e 100644 --- a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java +++ b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java @@ -213,8 +213,17 @@ public void add(final Album album) throws IOException, MPDException { */ public void add(final Album album, final boolean replace, final boolean play) throws IOException, MPDException { - final List songs = getSongs(album); - final CommandQueue commandQueue = MPDPlaylist.addAllCommand(songs); + final CommandQueue commandQueue; + + if (isCommandAvailable(MPDCommand.MPD_CMD_FIND_ADD)) { + commandQueue = new CommandQueue(); + + commandQueue + .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_FIND_ALBUM, album.getName()); + } else { + final List songs = getSongs(album); + commandQueue = MPDPlaylist.addAllCommand(songs); + } add(commandQueue, replace, play); } @@ -241,8 +250,17 @@ public void add(final Artist artist) throws IOException, MPDException { */ public void add(final Artist artist, final boolean replace, final boolean play) throws IOException, MPDException { - final List songs = getSongs(artist); - final CommandQueue commandQueue = MPDPlaylist.addAllCommand(songs); + final CommandQueue commandQueue; + + if (isCommandAvailable(MPDCommand.MPD_CMD_FIND_ADD)) { + commandQueue = new CommandQueue(); + + commandQueue + .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_FIND_ARTIST, artist.getName()); + } else { + final List songs = getSongs(artist); + commandQueue = MPDPlaylist.addAllCommand(songs); + } add(commandQueue, replace, play); } @@ -394,12 +412,22 @@ public void addStream(final String stream, final boolean replace, final boolean public void addToPlaylist(final String playlistName, final Album album) throws IOException, MPDException { - addToPlaylist(playlistName, new ArrayList<>(getSongs(album))); + if (mIdleConnection.isCommandAvailable(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST)) { + mConnection.sendCommand(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST, playlistName, + MPDCommand.MPD_SEARCH_ALBUM, album.getName()); + } else { + addToPlaylist(playlistName, new ArrayList<>(getSongs(album))); + } } public void addToPlaylist(final String playlistName, final Artist artist) throws IOException, MPDException { - addToPlaylist(playlistName, new ArrayList<>(getSongs(artist))); + if (mIdleConnection.isCommandAvailable(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST)) { + mConnection.sendCommand(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST, playlistName, + MPDCommand.MPD_SEARCH_ARTIST, artist.getName()); + } else { + addToPlaylist(playlistName, new ArrayList<>(getSongs(artist))); + } } public void addToPlaylist(final String playlistName, final Collection musicCollection) diff --git a/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java b/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java index 628cd5f68e..15858ac650 100644 --- a/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java +++ b/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java @@ -56,6 +56,9 @@ public class MPDCommand { public static final String MPD_CMD_FIND = "find"; + /** Added in MPD protocol 0.16.0 */ + public static final String MPD_CMD_FIND_ADD = "findadd"; + public static final String MPD_CMD_GROUP = "group"; public static final String MPD_CMD_IDLE = "idle"; @@ -115,6 +118,9 @@ public class MPDCommand { public static final String MPD_CMD_SEARCH = "search"; + /** Added in MPD protocol 0.17.0. */ + public static final String MPD_CMD_SEARCH_ADD_PLAYLIST = "searchaddpl"; + public static final String MPD_CMD_SEEK = "seek"; public static final String MPD_CMD_SEEK_ID = "seekid"; From 1a1478a84d110a39c28f1d30f46b57cb5daa8cf4 Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Sat, 22 Nov 2014 09:14:15 -0800 Subject: [PATCH 03/13] MPD: Make album adding a bit more greedy. This fixes a regression with 4b7c035 where the album would be added without an artist being specified. This also adds a helper method, no documentation as this code is likely to be rewritten prior to next release. --- JMPDComm/src/main/java/org/a0z/mpd/MPD.java | 53 +++++++++---------- .../src/main/java/org/a0z/mpd/MPDCommand.java | 4 -- 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java index ce1b980d0e..be41524091 100644 --- a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java +++ b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java @@ -113,44 +113,36 @@ public MPD(final String server, final int port, final String password) connect(server, port, password); } - private static MPDCommand getAlbumDetailsCommand(final Album album) { + private static String[] getAlbumArtistPair(final Album album) { final Artist artist = album.getArtist(); - String artistCommand = null; - String artistName = null; - - if (artist != null) { - artistName = artist.getName(); + final String[] artistPair; + if (artist == null) { + artistPair = new String[]{null, null}; + } else { if (album.hasAlbumArtist()) { - artistCommand = MPDCommand.MPD_TAG_ALBUM_ARTIST; + artistPair = new String[]{MPDCommand.MPD_TAG_ALBUM_ARTIST, artist.getName()}; } else { - artistCommand = MPDCommand.MPD_FIND_ARTIST; + artistPair = new String[]{MPDCommand.MPD_TAG_ARTIST, artist.getName()}; } } + return artistPair; + } + + private static MPDCommand getAlbumDetailsCommand(final Album album) { + final String[] artistPair = getAlbumArtistPair(album); + return new MPDCommand(MPDCommand.MPD_CMD_COUNT, MPDCommand.MPD_TAG_ALBUM, album.getName(), - artistCommand, artistName); + artistPair[0], artistPair[1]); } private static MPDCommand getSongsCommand(final Album album) { - final String albumName = album.getName(); - final Artist artist = album.getArtist(); - String artistName = null; - String artistCommand = null; - - if (artist != null) { - artistName = artist.getName(); - - if (album.hasAlbumArtist()) { - artistCommand = MPDCommand.MPD_TAG_ALBUM_ARTIST; - } else { - artistCommand = MPDCommand.MPD_TAG_ARTIST; - } - } + final String[] artistPair = getAlbumArtistPair(album); - return new MPDCommand(MPDCommand.MPD_CMD_FIND, MPDCommand.MPD_TAG_ALBUM, albumName, - artistCommand, artistName); + return new MPDCommand(MPDCommand.MPD_CMD_FIND, MPDCommand.MPD_TAG_ALBUM, album.getName(), + artistPair[0], artistPair[1]); } /* @@ -216,10 +208,13 @@ public void add(final Album album, final boolean replace, final boolean play) final CommandQueue commandQueue; if (isCommandAvailable(MPDCommand.MPD_CMD_FIND_ADD)) { + final String[] artistPair = getAlbumArtistPair(album); + commandQueue = new CommandQueue(); commandQueue - .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_FIND_ALBUM, album.getName()); + .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_TAG_ALBUM, album.getName(), + artistPair[0], artistPair[1]); } else { final List songs = getSongs(album); commandQueue = MPDPlaylist.addAllCommand(songs); @@ -256,7 +251,7 @@ public void add(final Artist artist, final boolean replace, final boolean play) commandQueue = new CommandQueue(); commandQueue - .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_FIND_ARTIST, artist.getName()); + .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_TAG_ARTIST, artist.getName()); } else { final List songs = getSongs(artist); commandQueue = MPDPlaylist.addAllCommand(songs); @@ -413,8 +408,10 @@ public void addStream(final String stream, final boolean replace, final boolean public void addToPlaylist(final String playlistName, final Album album) throws IOException, MPDException { if (mIdleConnection.isCommandAvailable(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST)) { + final String[] artistPair = getAlbumArtistPair(album); + mConnection.sendCommand(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST, playlistName, - MPDCommand.MPD_SEARCH_ALBUM, album.getName()); + MPDCommand.MPD_SEARCH_ALBUM, album.getName(), artistPair[0], artistPair[1]); } else { addToPlaylist(playlistName, new ArrayList<>(getSongs(album))); } diff --git a/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java b/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java index 15858ac650..195507c915 100644 --- a/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java +++ b/JMPDComm/src/main/java/org/a0z/mpd/MPDCommand.java @@ -138,10 +138,6 @@ public class MPDCommand { // deprecated commands public static final String MPD_CMD_VOLUME = "volume"; - public static final String MPD_FIND_ALBUM = "album"; - - public static final String MPD_FIND_ARTIST = "artist"; - public static final String MPD_LIST_RESPONSE_ARTIST = "Artist"; public static final String MPD_SEARCH_ALBUM = "album"; From bad737d3c18c82a0faf32d9c7a2ff01fedff3fa7 Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Sat, 22 Nov 2014 06:46:07 -0800 Subject: [PATCH 04/13] StreamHandler: If the headphones plug is pulled, turn streaming off. If the headphone plug is pulled, it's a likely expectation that the user no longer wishes to stream. --- .../java/com/namelessdev/mpdroid/service/MPDroidService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/MPDroid/src/main/java/com/namelessdev/mpdroid/service/MPDroidService.java b/MPDroid/src/main/java/com/namelessdev/mpdroid/service/MPDroidService.java index da2f87a7ff..0405d5a95c 100644 --- a/MPDroid/src/main/java/com/namelessdev/mpdroid/service/MPDroidService.java +++ b/MPDroid/src/main/java/com/namelessdev/mpdroid/service/MPDroidService.java @@ -435,6 +435,7 @@ public int onStartCommand(final Intent intent, final int flags, final int startI initializeAsyncHelper(); } MPDControl.run(MPD_ASYNC_HELPER.oMPD, MPDControl.ACTION_PAUSE); + stopStream(); } break; case Intent.ACTION_BOOT_COMPLETED: From 6072f1459419e047a5809fd6c2bf2dba6791f1b7 Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Sat, 22 Nov 2014 06:51:05 -0800 Subject: [PATCH 05/13] StreamHandler: If the stream is stopped during buffering, don't play. This should fix an inconsistency bug where if a stream was playing, and the stream would be stopped by the checkbox during buffering, the stream would continue playing and there would be no way to control stopping it without killing the instance. This fix is essentially the same thing as before, only slightly more strict. --- .../java/com/namelessdev/mpdroid/service/StreamHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MPDroid/src/main/java/com/namelessdev/mpdroid/service/StreamHandler.java b/MPDroid/src/main/java/com/namelessdev/mpdroid/service/StreamHandler.java index a296216963..d33f45005c 100644 --- a/MPDroid/src/main/java/com/namelessdev/mpdroid/service/StreamHandler.java +++ b/MPDroid/src/main/java/com/namelessdev/mpdroid/service/StreamHandler.java @@ -475,7 +475,7 @@ public void onPrepared(final MediaPlayer mp) { Log.d(TAG, "StreamHandler.onPrepared()"); } - if (mIsPlaying) { + if (mIsPlaying && mIsActive) { focusResult = mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); } else { @@ -486,7 +486,9 @@ public void onPrepared(final MediaPlayer mp) { mServiceHandler.sendEmptyMessage(BUFFERING_END); mMediaPlayer.start(); } else { - showErrorToUser(R.string.audioFocusFailed); + if (mIsActive && mIsPlaying) { + showErrorToUser(R.string.audioFocusFailed); + } /** Because mPreparingStream is still set, this will reset the stream. */ windDownResources(STREAMING_STOP); From b3885fcb5f57f08c172254c1762e2894ec94df33 Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Sun, 23 Nov 2014 10:24:15 -0800 Subject: [PATCH 06/13] MPD: Move Genre adding to MPD, incorporate find add support. The GenreFragment has always added it's items externally from JMPDComm, this patch incorporates the functionality and adds support for findadd/searchpladd. --- JMPDComm/src/main/java/org/a0z/mpd/MPD.java | 30 +++++++++++++++++++ .../mpdroid/fragments/GenresFragment.java | 6 ++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java index be41524091..7ebd8ed2de 100644 --- a/JMPDComm/src/main/java/org/a0z/mpd/MPD.java +++ b/JMPDComm/src/main/java/org/a0z/mpd/MPD.java @@ -290,6 +290,24 @@ public void add(final FilesystemTreeEntry music) throws IOException, MPDExceptio add(music, false, false); } + public void add(final Genre genre, final boolean replace, final boolean play) + throws IOException, MPDException { + final CommandQueue commandQueue; + + if (isCommandAvailable(MPDCommand.MPD_CMD_FIND_ADD)) { + commandQueue = new CommandQueue(); + + commandQueue + .add(MPDCommand.MPD_CMD_FIND_ADD, MPDCommand.MPD_TAG_GENRE, genre.getName()); + } else { + final Collection music = find(MPDCommand.MPD_TAG_GENRE, genre.getName()); + + commandQueue = MPDPlaylist.addAllCommand(music); + } + + add(commandQueue, replace, play); + } + /** * Adds songs to the queue. Optionally, clears the queue prior to the addition. Optionally, * play the added songs afterward. @@ -446,6 +464,18 @@ public void addToPlaylist(final String playlistName, final FilesystemTreeEntry e entry.getFullPath()); } + public void addToPlaylist(final String playlistName, final Genre genre) + throws IOException, MPDException { + if (mIdleConnection.isCommandAvailable(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST)) { + mConnection.sendCommand(MPDCommand.MPD_CMD_SEARCH_ADD_PLAYLIST, playlistName, + MPDCommand.MPD_SEARCH_GENRE, genre.getName()); + } else { + final Collection music = find(MPDCommand.MPD_TAG_GENRE, genre.getName()); + + addToPlaylist(playlistName, music); + } + } + public void addToPlaylist(final String playlistName, final Music music) throws IOException, MPDException { final Collection songs = new ArrayList<>(1); diff --git a/MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/GenresFragment.java b/MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/GenresFragment.java index 0b67d0ebf0..a16689622a 100644 --- a/MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/GenresFragment.java +++ b/MPDroid/src/main/java/com/namelessdev/mpdroid/fragments/GenresFragment.java @@ -43,8 +43,7 @@ public GenresFragment() { @Override protected void add(final Item item, final boolean replace, final boolean play) { try { - mApp.oMPDAsyncHelper.oMPD.getPlaylist().addAll( - mApp.oMPDAsyncHelper.oMPD.find("genre", item.getName())); + mApp.oMPDAsyncHelper.oMPD.add((Genre) item, replace, play); Tools.notifyUser(mIrAdded, item); } catch (final IOException | MPDException e) { Log.e(TAG, "Failed to add all from playlist.", e); @@ -54,8 +53,7 @@ protected void add(final Item item, final boolean replace, final boolean play) { @Override protected void add(final Item item, final String playlist) { try { - mApp.oMPDAsyncHelper.oMPD.addToPlaylist(playlist, - mApp.oMPDAsyncHelper.oMPD.find("genre", item.getName())); + mApp.oMPDAsyncHelper.oMPD.addToPlaylist(playlist, (Genre) item); Tools.notifyUser(mIrAdded, item); } catch (final IOException | MPDException e) { Log.e(TAG, "Failed to add all genre to playlist.", e); From 713d491800f93aa2e1a0d2d066a9648e5e435e91 Mon Sep 17 00:00:00 2001 From: Arnaud Barisain-Monrose Date: Wed, 26 Nov 2014 21:50:08 +0100 Subject: [PATCH 07/13] Fix old icon for Nexus 6 --- .../src/main/res/drawable-xxxhdpi/icon.png | Bin 27382 -> 9215 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/MPDroid/src/main/res/drawable-xxxhdpi/icon.png b/MPDroid/src/main/res/drawable-xxxhdpi/icon.png index 58284f029d4bc49213153f7fa006ce643bdfd9de..ceb6124a1f694a8dcace05e5c1e796b752fb259f 100644 GIT binary patch delta 6523 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 Y^>m)}GVL>kf*wEBH=2rd@|NNM1CYD#=l}o! From d4f5ccaf5d898beafe80bb8527e4e756bf941b1d Mon Sep 17 00:00:00 2001 From: Avuton Olrich Date: Wed, 26 Nov 2014 12:31:49 -0800 Subject: [PATCH 08/13] gradle: Update for AS 1.0rc2. --- .idea/gradle.xml | 3 ++- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index db835c9430..a63673e627 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,8 +3,9 @@