[Android] seek methods for playbackService

Geoffrey Métais git at videolan.org
Thu Jun 9 17:13:57 CEST 2016


vlc-android | branch: 2.0.x | Geoffrey Métais <geoffrey.metais at gmail.com> | Thu Jun  9 16:11:24 2016 +0200| [c6218ab47f9b799c066614d3ed9781ced885358e] | committer: Geoffrey Métais

seek methods for playbackService

Handle setPosition, then setTime if length is not available.

(cherry picked from commit 0d3b889a018908a000e46fdc76dc3dbfd320f413)

> https://code.videolan.org/videolan/vlc-android/commit/c6218ab47f9b799c066614d3ed9781ced885358e
---

 vlc-android/src/org/videolan/vlc/PlaybackService.java | 19 ++++++++++++++++---
 .../videolan/vlc/gui/video/VideoPlayerActivity.java   |  5 +----
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/PlaybackService.java b/vlc-android/src/org/videolan/vlc/PlaybackService.java
index 7447f4f..bf69be6 100644
--- a/vlc-android/src/org/videolan/vlc/PlaybackService.java
+++ b/vlc-android/src/org/videolan/vlc/PlaybackService.java
@@ -1110,7 +1110,7 @@ public class PlaybackService extends Service implements IVLCVout.Callback {
 
         @Override
         public void onSeekTo(long pos) {
-            setTime(pos);
+            seek(pos);
         }
 
         @Override
@@ -1342,7 +1342,7 @@ public class PlaybackService extends Service implements IVLCVout.Callback {
         // load playlist
         loadLocations(mediaPathList, position);
         if (time > 0)
-            setTime(time);
+            seek(time);
         if(!audio) {
             boolean paused = mSettings.getBoolean(PreferencesActivity.VIDEO_PAUSED, !isPlaying());
             float rate = mSettings.getFloat(PreferencesActivity.VIDEO_SPEED, getRate());
@@ -1741,7 +1741,7 @@ public class PlaybackService extends Service implements IVLCVout.Callback {
             mMediaPlayer.setEventListener(mMediaPlayerListener);
             mMediaPlayer.play();
             if(mSavedTime != 0l)
-                mMediaPlayer.setTime(mSavedTime);
+                seek(mSavedTime);
             mSavedTime = 0l;
 
             determinePrevAndNextIndices();
@@ -1995,6 +1995,19 @@ public class PlaybackService extends Service implements IVLCVout.Callback {
     }
 
     @MainThread
+    public void seek(long position) {
+        seek(position, getLength());
+    }
+
+    @MainThread
+    public void seek(long position, long length) {
+        if (length > 0)
+            setPosition(position/length);
+        else
+            setTime(position);
+    }
+
+    @MainThread
     public void setPosition(float pos) {
         if (mSeekable)
             mMediaPlayer.setPosition(pos);
diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
index 408b997..e5be8a1 100644
--- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
+++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
@@ -2507,10 +2507,7 @@ public class VideoPlayerActivity extends AppCompatActivity implements IVLCVout.C
     private void seek(long position, float length) {
         mForcedTime = position;
         mLastTime = mService.getTime();
-        if (length <= 0f)
-            mService.setTime(position);
-        else
-            mService.setPosition(position / length);
+        mService.seek(position, length);
     }
 
     private void seekDelta(int delta) {



More information about the Android mailing list