diff options
author | Scott Jackson <daneren2005@users.noreply.github.com> | 2017-06-19 11:37:47 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-19 11:37:47 -0700 |
commit | e41dfa468d47f4ae6b06117040e9903b62fe9aaa (patch) | |
tree | 7cee15551a6d12660a4bbf9158eae4c10f289294 /app/src/main/java/github/daneren2005/dsub/service | |
parent | df7e77a3e658a3a41b2066dec81c06bb51c41daf (diff) | |
parent | 4c021cf9b36f91146ce0c25a05f9c4c9140f91e9 (diff) | |
download | dsub-e41dfa468d47f4ae6b06117040e9903b62fe9aaa.tar.gz dsub-e41dfa468d47f4ae6b06117040e9903b62fe9aaa.tar.bz2 dsub-e41dfa468d47f4ae6b06117040e9903b62fe9aaa.zip |
Merge pull request #805 from KBerstene/bugfix/playbackcontrols
Bugfix: Previous and next button behavior while long song is paused
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 636745d6..8213a7d4 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/DownloadService.java @@ -1027,6 +1027,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); @@ -1202,12 +1206,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); @@ -1228,7 +1233,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) { @@ -2819,12 +2824,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); @@ -2846,12 +2852,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); } } }); @@ -3051,8 +3058,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); |