diff options
author | Scott Jackson <daneren2005@gmail.com> | 2017-06-19 11:38:58 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2017-06-19 11:38:58 -0700 |
commit | f863540f073fec131977d071605430b9770d57ae (patch) | |
tree | c79602121520cb90fb5ed289df76f5494a903b4d /app/src/main/java/github/daneren2005/dsub/service | |
parent | b0e0ab17a5689e726efb51a0a6a56da634aaa79f (diff) | |
parent | e41dfa468d47f4ae6b06117040e9903b62fe9aaa (diff) | |
download | dsub-f863540f073fec131977d071605430b9770d57ae.tar.gz dsub-f863540f073fec131977d071605430b9770d57ae.tar.bz2 dsub-f863540f073fec131977d071605430b9770d57ae.zip |
Merge branch 'master' into edge
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/service')
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/service/DownloadService.java | 21 |
1 files changed, 14 insertions, 7 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 fe18ede0..4b8d9db3 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java @@ -1025,6 +1025,10 @@ public class DownloadService extends Service { } } + public synchronized boolean shouldFastForward() { + return size() == 1 || (currentPlaying != null && !currentPlaying.isSong()); + } + public synchronized List<DownloadFile> getDownloads() { List<DownloadFile> temp = new ArrayList<DownloadFile>(); temp.addAll(downloadList); @@ -1200,12 +1204,13 @@ public class DownloadService extends Service { } // If only one song, just skip within song - if(size() == 1 || (currentPlaying != null && !currentPlaying.isSong())) { + if(shouldFastForward()) { rewind(); return; + } else if(playerState == PREPARING || playerState == PREPARED) { + return; } - // Restart song if played more than five seconds. if (getPlayerPosition() > 5000 || (index == 0 && getRepeatMode() != RepeatMode.ALL)) { seekTo(0); @@ -1226,7 +1231,7 @@ public class DownloadService extends Service { } public synchronized void next(boolean forceCutoff, boolean forceStart) { // If only one song, just skip within song - if(size() == 1 || (currentPlaying != null && !currentPlaying.isSong())) { + if(shouldFastForward()) { fastForward(); return; } else if(playerState == PREPARING || playerState == PREPARED) { @@ -2817,12 +2822,13 @@ public class DownloadService extends Service { private void onSongChanged() { final long atRevision = revision; synchronized(onSongChangedListeners) { + final boolean shouldFastForward = shouldFastForward(); for (final OnSongChangedListener listener : onSongChangedListeners) { handler.post(new Runnable() { @Override public void run() { if (revision == atRevision && instance != null) { - listener.onSongChanged(currentPlaying, currentPlayingIndex); + listener.onSongChanged(currentPlaying, currentPlayingIndex, shouldFastForward); MusicDirectory.Entry entry = currentPlaying != null ? currentPlaying.getSong() : null; listener.onMetadataUpdate(entry, METADATA_UPDATED_ALL); @@ -2844,12 +2850,13 @@ public class DownloadService extends Service { private void onSongsChanged() { final long atRevision = revision; synchronized(onSongChangedListeners) { + final boolean shouldFastForward = shouldFastForward(); for (final OnSongChangedListener listener : onSongChangedListeners) { handler.post(new Runnable() { @Override public void run() { if (revision == atRevision && instance != null) { - listener.onSongsChanged(downloadList, currentPlaying, currentPlayingIndex); + listener.onSongsChanged(downloadList, currentPlaying, currentPlayingIndex, shouldFastForward); } } }); @@ -3049,8 +3056,8 @@ public class DownloadService extends Service { } public interface OnSongChangedListener { - void onSongChanged(DownloadFile currentPlaying, int currentPlayingIndex); - void onSongsChanged(List<DownloadFile> songs, DownloadFile currentPlaying, int currentPlayingIndex); + void onSongChanged(DownloadFile currentPlaying, int currentPlayingIndex, boolean shouldFastForward); + void onSongsChanged(List<DownloadFile> songs, DownloadFile currentPlaying, int currentPlayingIndex, boolean shouldFastForward); void onSongProgress(DownloadFile currentPlaying, int millisPlayed, Integer duration, boolean isSeekable); void onStateUpdate(DownloadFile downloadFile, PlayerState playerState); void onMetadataUpdate(MusicDirectory.Entry entry, int fieldChange); |