move onPlaybackStart and onPlaybackPause tasks to separate callback methods
This commit is contained in:
parent
d18cf41f20
commit
19a647226d
@ -1,6 +1,8 @@
|
||||
package de.test.antennapod.service.playback;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.test.InstrumentationTestCase;
|
||||
|
||||
import junit.framework.AssertionFailedError;
|
||||
@ -113,7 +115,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
public void testInit() {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, defaultCallback);
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, new DefaultPSMPCallback());
|
||||
psmp.shutdown();
|
||||
}
|
||||
|
||||
@ -139,7 +141,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectStreamNoStartNoPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(2);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -160,56 +162,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, null);
|
||||
@ -227,7 +179,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectStreamStartNoPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(2);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -248,56 +200,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, null);
|
||||
@ -316,7 +218,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectStreamNoStartPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(4);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -340,56 +242,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, null);
|
||||
@ -406,7 +258,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectStreamStartPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(5);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -433,57 +285,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, null);
|
||||
@ -499,7 +300,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectLocalNoStartNoPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(2);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -520,57 +321,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -587,7 +337,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectLocalStartNoPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(2);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -608,56 +358,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -674,7 +374,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectLocalNoStartPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(4);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -698,56 +398,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -763,7 +413,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
public void testPlayMediaObjectLocalStartPrepare() throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(5);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
try {
|
||||
@ -791,56 +441,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -853,68 +453,12 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
psmp.shutdown();
|
||||
}
|
||||
|
||||
|
||||
private final PlaybackServiceMediaPlayer.PSMPCallback defaultCallback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
checkPSMPInfo(newInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) { return false; }
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
private void pauseTestSkeleton(final PlayerStatus initialState, final boolean stream, final boolean abandonAudioFocus, final boolean reinit, long timeoutSeconds) throws InterruptedException {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final int latchCount = (stream && reinit) ? 2 : 1;
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(latchCount);
|
||||
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
checkPSMPInfo(newInfo);
|
||||
@ -953,52 +497,12 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = new AssertionFailedError("Unexpected call to shouldStop");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
if (assertionError == null)
|
||||
assertionError = new AssertionFailedError("Unexpected call to onMediaPlayerError");
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -1055,7 +559,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
(initialState == PlayerStatus.PREPARED) ? 1 : 0;
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(latchCount);
|
||||
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
checkPSMPInfo(newInfo);
|
||||
@ -1073,36 +577,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
if (assertionError == null) {
|
||||
@ -1110,21 +584,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
if (initialState == PlayerStatus.PREPARED || initialState == PlayerStatus.PLAYING || initialState == PlayerStatus.PAUSED) {
|
||||
@ -1158,7 +617,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final int latchCount = 1;
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(latchCount);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
checkPSMPInfo(newInfo);
|
||||
@ -1172,37 +631,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1211,21 +639,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
assertionError = new AssertionFailedError("Unexpected call to onMediaPlayerError");
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -1273,7 +686,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
final Context c = getInstrumentation().getTargetContext();
|
||||
final int latchCount = 2;
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(latchCount);
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new PlaybackServiceMediaPlayer.PSMPCallback() {
|
||||
PlaybackServiceMediaPlayer.PSMPCallback callback = new DefaultPSMPCallback() {
|
||||
@Override
|
||||
public void statusChanged(LocalPSMP.PSMPInfo newInfo) {
|
||||
checkPSMPInfo(newInfo);
|
||||
@ -1289,57 +702,12 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
if (assertionError == null)
|
||||
assertionError = new AssertionFailedError("Unexpected call to onMediaPlayerError");
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
};
|
||||
PlaybackServiceMediaPlayer psmp = new LocalPSMP(c, callback);
|
||||
Playable p = writeTestPlayable(PLAYABLE_FILE_URL, PLAYABLE_LOCAL_URL);
|
||||
@ -1378,4 +746,71 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
super("Unexpected state change: " + status);
|
||||
}
|
||||
}
|
||||
|
||||
private class DefaultPSMPCallback implements PlaybackServiceMediaPlayer.PSMPCallback {
|
||||
@Override
|
||||
public void statusChanged(PlaybackServiceMediaPlayer.PSMPInfo newInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shouldStop() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaChanged(boolean reloadUI) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerInfo(int code, @StringRes int resourceId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMediaPlayerError(Object inObj, int what, int extra) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(@NonNull Playable media, boolean ended, boolean playingNext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackStart(@NonNull Playable playable, int position) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackPause(@NonNull Playable playable, int position) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackEnded(MediaType mediaType, boolean stopPlaying) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -140,14 +140,12 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
}
|
||||
// set temporarily to pause in order to update list with current position
|
||||
if (playerStatus == PlayerStatus.PLAYING) {
|
||||
setPlayerStatus(PlayerStatus.PAUSED, media);
|
||||
callback.onPlaybackPause(media, getPosition());
|
||||
}
|
||||
|
||||
if (!media.getIdentifier().equals(playable.getIdentifier())) {
|
||||
final Playable oldMedia = media;
|
||||
executor.submit(() -> callback.onPostPlayback(oldMedia, false, true));
|
||||
} else {
|
||||
media.onPlaybackPause(context);
|
||||
}
|
||||
|
||||
setPlayerStatus(PlayerStatus.INDETERMINATE, null);
|
||||
@ -204,6 +202,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
audioFocusChangeListener, AudioManager.STREAM_MUSIC,
|
||||
AudioManager.AUDIOFOCUS_GAIN);
|
||||
if (focusGained == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
|
||||
Log.d(TAG, "Audiofocus successfully requested");
|
||||
Log.d(TAG, "Resuming/Starting playback");
|
||||
acquireWifiLockIfNecessary();
|
||||
float speed = 1.0f;
|
||||
try {
|
||||
@ -223,10 +223,9 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
}
|
||||
mediaPlayer.start();
|
||||
|
||||
callback.onPlaybackStart(media, INVALID_TIME);
|
||||
setPlayerStatus(PlayerStatus.PLAYING, media);
|
||||
pausedBecauseOfTransientAudiofocusLoss = false;
|
||||
media.onPlaybackStart();
|
||||
|
||||
} else {
|
||||
Log.e(TAG, "Failed to request audio focus");
|
||||
}
|
||||
@ -254,8 +253,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
if (playerStatus == PlayerStatus.PLAYING) {
|
||||
Log.d(TAG, "Pausing playback.");
|
||||
mediaPlayer.pause();
|
||||
callback.onPlaybackPause(media, getPosition());
|
||||
setPlayerStatus(PlayerStatus.PAUSED, media);
|
||||
media.onPlaybackPause(context.getApplicationContext());
|
||||
|
||||
if (abandonFocus) {
|
||||
audioManager.abandonAudioFocus(audioFocusChangeListener);
|
||||
@ -384,8 +383,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
}
|
||||
seekLatch = new CountDownLatch(1);
|
||||
if (statusBeforeSeeking == PlayerStatus.PLAYING) {
|
||||
media.setPosition(getPosition());
|
||||
media.onPlaybackPause(context);
|
||||
callback.onPlaybackPause(media, getPosition());
|
||||
}
|
||||
mediaPlayer.seekTo(t);
|
||||
try {
|
||||
@ -931,13 +929,12 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
||||
seekLatch.countDown();
|
||||
}
|
||||
playerLock.lock();
|
||||
media.setPosition(getPosition());
|
||||
if (playerStatus == PlayerStatus.PLAYING) {
|
||||
media.onPlaybackStart();
|
||||
callback.onPlaybackStart(media, getPosition());
|
||||
}
|
||||
if (playerStatus == PlayerStatus.SEEKING) {
|
||||
if (statusBeforeSeeking == PlayerStatus.PLAYING) {
|
||||
media.onPlaybackStart();
|
||||
callback.onPlaybackStart(media, getPosition());
|
||||
}
|
||||
setPlayerStatus(statusBeforeSeeking, media);
|
||||
}
|
||||
|
@ -524,7 +524,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
private final PlaybackServiceTaskManager.PSTMCallback taskManagerCallback = new PlaybackServiceTaskManager.PSTMCallback() {
|
||||
@Override
|
||||
public void positionSaverTick() {
|
||||
saveCurrentPosition();
|
||||
saveCurrentPosition(true, null, PlaybackServiceMediaPlayer.INVALID_TIME);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -576,9 +576,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
break;
|
||||
|
||||
case PAUSED:
|
||||
taskManager.cancelPositionSaver();
|
||||
saveCurrentPosition();
|
||||
taskManager.cancelWidgetUpdater();
|
||||
if ((UserPreferences.isPersistNotify() || isCasting) &&
|
||||
android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
// do not remove notification on pause based on user pref and whether android version supports expanded notifications
|
||||
@ -597,12 +594,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
break;
|
||||
|
||||
case PLAYING:
|
||||
Log.d(TAG, "Audiofocus successfully requested");
|
||||
Log.d(TAG, "Resuming/Starting playback");
|
||||
|
||||
taskManager.startPositionSaver();
|
||||
taskManager.startWidgetUpdater();
|
||||
writePlayerStatusPlaybackPreferences();
|
||||
setupNotification(newInfo);
|
||||
started = true;
|
||||
break;
|
||||
@ -677,10 +668,30 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostPlayback(Playable media, boolean ended, boolean playingNext) {
|
||||
public void onPostPlayback(@NonNull Playable media, boolean ended, boolean playingNext) {
|
||||
PlaybackService.this.onPostPlayback(media, ended, playingNext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackStart(@NonNull Playable playable, int position) {
|
||||
taskManager.startWidgetUpdater();
|
||||
writePlayerStatusPlaybackPreferences();
|
||||
if (position != PlaybackServiceMediaPlayer.INVALID_TIME) {
|
||||
playable.setPosition(position);
|
||||
}
|
||||
playable.onPlaybackStart();
|
||||
taskManager.startPositionSaver();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaybackPause(@NonNull Playable playable, int position) {
|
||||
taskManager.cancelPositionSaver();
|
||||
saveCurrentPosition(position == PlaybackServiceMediaPlayer.INVALID_TIME,
|
||||
playable, position);
|
||||
taskManager.cancelWidgetUpdater();
|
||||
playable.onPlaybackPause(getApplicationContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Playable getNextInQueue(Playable currentMedia) {
|
||||
return PlaybackService.this.getNextInQueue(currentMedia);
|
||||
@ -1200,11 +1211,22 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
|
||||
/**
|
||||
* Persists the current position and last played time of the media file.
|
||||
*
|
||||
* @param fromMediaPlayer if true, the information is gathered from the current Media Player
|
||||
* and {@param playable} and {@param position} become irrelevant.
|
||||
* @param playable the playable for which the current position should be saved, unless
|
||||
* {@param fromMediaPlayer} is true.
|
||||
* @param position the position that should be saved, unless {@param fromMediaPlayer} is true.
|
||||
*/
|
||||
private synchronized void saveCurrentPosition() {
|
||||
int position = getCurrentPosition();
|
||||
int duration = getDuration();
|
||||
final Playable playable = mediaPlayer.getPlayable();
|
||||
private synchronized void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position) {
|
||||
int duration;
|
||||
if (fromMediaPlayer) {
|
||||
position = getCurrentPosition();
|
||||
duration = getDuration();
|
||||
playable = mediaPlayer.getPlayable();
|
||||
} else {
|
||||
duration = playable.getDuration();
|
||||
}
|
||||
if (position != INVALID_TIME && duration != INVALID_TIME && playable != null) {
|
||||
Log.d(TAG, "Saving current position to " + position);
|
||||
playable.saveCurrentPosition(
|
||||
@ -1621,7 +1643,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
PlaybackServiceMediaPlayer getMediaPlayer();
|
||||
void setIsCasting(boolean isCasting);
|
||||
void sendNotificationBroadcast(int type, int code);
|
||||
void saveCurrentPosition();
|
||||
void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position);
|
||||
void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info);
|
||||
MediaSessionCompat getMediaSession();
|
||||
Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
|
||||
@ -1655,8 +1677,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveCurrentPosition() {
|
||||
PlaybackService.this.saveCurrentPosition();
|
||||
public void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position) {
|
||||
PlaybackService.this.saveCurrentPosition(fromMediaPlayer, playable, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -301,7 +301,11 @@ public abstract class PlaybackServiceMediaPlayer {
|
||||
|
||||
boolean onMediaPlayerError(Object inObj, int what, int extra);
|
||||
|
||||
void onPostPlayback(Playable media, boolean ended, boolean playingNext);
|
||||
void onPostPlayback(@NonNull Playable media, boolean ended, boolean playingNext);
|
||||
|
||||
void onPlaybackStart(@NonNull Playable playable, int position);
|
||||
|
||||
void onPlaybackPause(@NonNull Playable playable, int position);
|
||||
|
||||
Playable getNextInQueue(Playable currentMedia);
|
||||
|
||||
|
@ -108,7 +108,7 @@ public class PlaybackServiceFlavorHelper {
|
||||
// to the latest position.
|
||||
PlaybackServiceMediaPlayer mediaPlayer = callback.getMediaPlayer();
|
||||
if (mediaPlayer != null) {
|
||||
callback.saveCurrentPosition();
|
||||
callback.saveCurrentPosition(true, null, PlaybackServiceMediaPlayer.INVALID_TIME);
|
||||
infoBeforeCastDisconnection = mediaPlayer.getPSMPInfo();
|
||||
if (reason != BaseCastManager.DISCONNECT_REASON_EXPLICIT &&
|
||||
infoBeforeCastDisconnection.playerStatus == PlayerStatus.PLAYING) {
|
||||
@ -160,7 +160,7 @@ public class PlaybackServiceFlavorHelper {
|
||||
// could be pause, but this way we make sure the new player will get the correct position,
|
||||
// since pause runs asynchronously and we could be directing the new player to play even before
|
||||
// the old player gives us back the position.
|
||||
callback.saveCurrentPosition();
|
||||
callback.saveCurrentPosition(true, null, PlaybackServiceMediaPlayer.INVALID_TIME);
|
||||
}
|
||||
}
|
||||
if (info == null) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user