diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2016-02-10 20:42:12 +0100 |
---|---|---|
committer | Martin Fietz <Martin.Fietz@gmail.com> | 2016-02-10 20:42:12 +0100 |
commit | 66faaa4bdd907638c7549d498442e6f0f6c41dfd (patch) | |
tree | ae0f11fcfa809f64731a7b990637bdc3c3faf7cf | |
parent | 82935f4336ce1084983407770d065c71c597437e (diff) | |
download | AudioPlayer-66faaa4bdd907638c7549d498442e6f0f6c41dfd.tar.gz |
Wait for playback to endHEADstudio-3.4.0studio-3.2.1studio-3.1.2studio-3.0studio-2.3gradle_3.4.0gradle_3.1.2gradle_3.0.0gradle_2.3.0studio-master-devmirror-goog-studio-master-devmastermain
-rw-r--r-- | library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java index 976ce9c..e055513 100644 --- a/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java +++ b/library/src/main/java/org/antennapod/audio/SonicAudioPlayer.java @@ -612,6 +612,9 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { @SuppressWarnings("deprecation") public void decode() { mDecoderThread = new Thread(new Runnable() { + + private int currHeadPos; + @Override public void run() { @@ -625,6 +628,7 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { boolean sawOutputEOS = false; while (!sawInputEOS && !sawOutputEOS && mContinue) { + currHeadPos = mTrack.getPlaybackHeadPosition(); if (mCurrentState == STATE_PAUSED) { System.out.println("Decoder changed to PAUSED"); try { @@ -736,7 +740,18 @@ public class SonicAudioPlayer extends AbstractAudioPlayer { Log.d(TAG_TRACK, "Duration: " + (int) (mDuration / 1000)); Log.d(TAG_TRACK, "Current position: " + (int) (mExtractor.getSampleTime() / 1000)); mCodec.stop(); + + // wait for track to finish playing + int lastHeadPos; + do { + lastHeadPos = currHeadPos; + try { + Thread.sleep(100); + currHeadPos = mTrack.getPlaybackHeadPosition(); + } catch (InterruptedException e) { /* ignore */ } + } while(currHeadPos != lastHeadPos); mTrack.stop(); + Log.d(TAG_TRACK, "Stopped codec and track"); Log.d(TAG_TRACK, "Current position: " + (int) (mExtractor.getSampleTime() / 1000)); mIsDecoding = false; |