diff --git a/res/values/translatable.xml b/res/values/translatable.xml
index f1ae0d2c..a8db1dd1 100644
--- a/res/values/translatable.xml
+++ b/res/values/translatable.xml
@@ -279,6 +279,8 @@ THE SOFTWARE.
Dequeue rest
Queue
Toggle controls
+ Seek 10 seconds backward
+ Seek 10 seconds forward
Filebrowser home
Filebrowser starts at this directory
diff --git a/res/values/untranslatable.xml b/res/values/untranslatable.xml
index cc2b6d7e..43b76cab 100644
--- a/res/values/untranslatable.xml
+++ b/res/values/untranslatable.xml
@@ -53,6 +53,8 @@ THE SOFTWARE.
- ClearQueue
- ShowQueue
- ToggleControls
+ - SeekForward
+ - SeekBackward
@@ -71,6 +73,8 @@ THE SOFTWARE.
- @string/clear_queue
- @string/show_queue
- @string/toggle_controls
+ - @string/seek_10s_forward
+ - @string/seek_10s_backward
- @string/play
diff --git a/src/ch/blinkenlights/android/vanilla/Action.java b/src/ch/blinkenlights/android/vanilla/Action.java
index 0f94a953..c207dd18 100644
--- a/src/ch/blinkenlights/android/vanilla/Action.java
+++ b/src/ch/blinkenlights/android/vanilla/Action.java
@@ -87,7 +87,15 @@ enum Action {
/**
* Toggle the controls in the playback activity.
*/
- ToggleControls;
+ ToggleControls,
+ /**
+ * Seek 10 seconds forward
+ */
+ SeekForward,
+ /**
+ * Seek 10 seconds back
+ */
+ SeekBackward;
/**
* Retrieve an action from the given SharedPreferences.
@@ -108,4 +116,4 @@ enum Action {
return def;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackService.java b/src/ch/blinkenlights/android/vanilla/PlaybackService.java
index 52c38e97..a74ff6b7 100644
--- a/src/ch/blinkenlights/android/vanilla/PlaybackService.java
+++ b/src/ch/blinkenlights/android/vanilla/PlaybackService.java
@@ -2114,6 +2114,23 @@ public final class PlaybackService extends Service
case ToggleControls:
// Handled in FullPlaybackActivity.performAction
break;
+ case SeekForward:
+ if (mCurrentSong != null) {
+ mPendingSeekSong = mCurrentSong.id;
+ mPendingSeek = getPosition() + 10000;
+ // We 'abuse' setCurrentSong as it will stop the playback and restart it
+ // at the new position, taking care of the ui update
+ setCurrentSong(0);
+ }
+ break;
+ case SeekBackward:
+ if (mCurrentSong != null) {
+ mPendingSeekSong = mCurrentSong.id;
+ mPendingSeek = getPosition() - 10000;
+ if (mPendingSeek < 1) mPendingSeek = 1; // must at least be 1
+ setCurrentSong(0);
+ }
+ break;
default:
throw new IllegalArgumentException("Invalid action: " + action);
}