aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/service
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@users.noreply.github.com>2017-06-19 11:37:47 -0700
committerGitHub <noreply@github.com>2017-06-19 11:37:47 -0700
commite41dfa468d47f4ae6b06117040e9903b62fe9aaa (patch)
tree7cee15551a6d12660a4bbf9158eae4c10f289294 /app/src/main/java/github/daneren2005/dsub/service
parentdf7e77a3e658a3a41b2066dec81c06bb51c41daf (diff)
parent4c021cf9b36f91146ce0c25a05f9c4c9140f91e9 (diff)
downloaddsub-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.java21
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);