aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/service/DownloadService.java')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/service/DownloadService.java31
1 files changed, 30 insertions, 1 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java b/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java
index 576791b2..d33fa527 100644
--- a/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java
+++ b/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java
@@ -103,6 +103,7 @@ public class DownloadService extends Service {
public static final int REWIND = 10000;
private static final double DELETE_CUTOFF = 0.84;
private static final int REQUIRED_ALBUM_MATCHES = 4;
+ private static final int REMOTE_PLAYLIST_TOTAL = 3;
private static final int SHUFFLE_MODE_NONE = 0;
private static final int SHUFFLE_MODE_ALL = 1;
private static final int SHUFFLE_MODE_ARTIST = 2;
@@ -448,10 +449,21 @@ public class DownloadService extends Service {
lifecycleSupport.serializeDownloadQueue();
}
- private void updateRemotePlaylist() {
+ private synchronized void updateRemotePlaylist() {
+ List<DownloadFile> playlist = new ArrayList<>();
+ if(currentPlaying != null) {
+ int index = downloadList.indexOf(currentPlaying);
+ int size = size();
+ int end = index + REMOTE_PLAYLIST_TOTAL;
+ for(int i = index; i < size && i < end; i++) {
+ playlist.add(downloadList.get(i));
+ }
+ }
+
if (remoteState != LOCAL && remoteController != null) {
remoteController.updatePlaylist();
}
+ mRemoteControl.updatePlaylist(playlist);
}
public synchronized void restore(List<MusicDirectory.Entry> songs, List<MusicDirectory.Entry> toDelete, int currentPlayingIndex, int currentPlayingPosition) {
@@ -1026,6 +1038,7 @@ public class DownloadService extends Service {
proxy = null;
}
checkDownloads();
+ updateRemotePlaylist();
}
/** Plays or resumes the playback, depending on the current player state. */
@@ -1762,6 +1775,8 @@ public class DownloadService extends Service {
setPlayerState(PAUSED);
onSongProgress();
}
+
+ updateRemotePlaylist();
}
// Only call when starting, setPlayerState(PAUSED) already calls this
@@ -2604,6 +2619,13 @@ public class DownloadService extends Service {
}
});
}
+
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ mRemoteControl.setPlaybackState(playerState.getRemoteControlClientPlayState());
+ }
+ });
}
private void onStateUpdate() {
final long atRevision = revision;
@@ -2631,6 +2653,13 @@ public class DownloadService extends Service {
}
});
}
+
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ mRemoteControl.metadataChanged(currentPlaying.getSong());
+ }
+ });
}
private class BufferTask extends SilentBackgroundTask<Void> {