summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2014-02-10 20:06:50 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2014-02-10 20:06:50 +0100
commit0b735b60267105401a93ee2404a031496acb7131 (patch)
tree1221492fc17d0a0bd2b5f83bb47e5d041ea655f9 /src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java
parentf278eaf74d266c7136e5f3d826be49760516076c (diff)
downloadAntennaPod-0b735b60267105401a93ee2404a031496acb7131.zip
Resolved problems with ending playback.
- OnPreparedListener removed: not necessary anymore, because end of preparing playback is handled manually
Diffstat (limited to 'src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java')
-rw-r--r--src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java42
1 files changed, 12 insertions, 30 deletions
diff --git a/src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java b/src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java
index f6e749324..da273cc0e 100644
--- a/src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java
+++ b/src/de/danoeh/antennapod/service/playback/PlaybackServiceMediaPlayer.java
@@ -112,8 +112,13 @@ public class PlaybackServiceMediaPlayer {
@Override
public void run() {
playerLock.lock();
- playMediaObject(playable, false, stream, startWhenPrepared, prepareImmediately);
- playerLock.unlock();
+ try {
+ playMediaObject(playable, false, stream, startWhenPrepared, prepareImmediately);
+ } catch (RuntimeException e) {
+ throw e;
+ } finally {
+ playerLock.unlock();
+ }
}
});
}
@@ -145,11 +150,12 @@ public class PlaybackServiceMediaPlayer {
setPlayerStatus(PlayerStatus.INDETERMINATE, null);
}
}
- createMediaPlayer();
+
this.media = playable;
this.stream = stream;
this.mediaType = media.getMediaType();
this.videoSize = null;
+ createMediaPlayer();
PlaybackServiceMediaPlayer.this.startWhenPrepared.set(startWhenPrepared);
setPlayerStatus(PlayerStatus.INITIALIZING, media);
try {
@@ -313,8 +319,10 @@ public class PlaybackServiceMediaPlayer {
void onPrepared(final boolean startWhenPrepared) {
playerLock.lock();
- if (playerStatus != PlayerStatus.PREPARING)
+ if (playerStatus != PlayerStatus.PREPARING) {
+ playerLock.unlock();
throw new IllegalStateException("Player is not in PREPARING state");
+ }
if (AppConfig.DEBUG)
Log.d(TAG, "Resource prepared");
@@ -760,34 +768,9 @@ public class PlaybackServiceMediaPlayer {
public RemoteControlClient getRemoteControlClient();
}
- private final com.aocate.media.MediaPlayer.OnPreparedListener audioPreparedListener = new com.aocate.media.MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(final com.aocate.media.MediaPlayer mp) {
- executor.submit(new Runnable() {
- @Override
- public void run() {
- PlaybackServiceMediaPlayer.this.onPrepared(startWhenPrepared.get());
- }
- });
- }
- };
-
- private final android.media.MediaPlayer.OnPreparedListener videoPreparedListener = new android.media.MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(android.media.MediaPlayer mp) {
- executor.submit(new Runnable() {
- @Override
- public void run() {
- PlaybackServiceMediaPlayer.this.onPrepared(startWhenPrepared.get());
- }
- });
- }
- };
-
private IPlayer setMediaPlayerListeners(IPlayer mp) {
if (mp != null && media != null) {
if (media.getMediaType() == MediaType.AUDIO) {
- ((AudioPlayer) mp).setOnPreparedListener(audioPreparedListener);
((AudioPlayer) mp)
.setOnCompletionListener(audioCompletionListener);
((AudioPlayer) mp)
@@ -797,7 +780,6 @@ public class PlaybackServiceMediaPlayer {
.setOnBufferingUpdateListener(audioBufferingUpdateListener);
((AudioPlayer) mp).setOnInfoListener(audioInfoListener);
} else {
- ((VideoPlayer) mp).setOnPreparedListener(videoPreparedListener);
((VideoPlayer) mp)
.setOnCompletionListener(videoCompletionListener);
((VideoPlayer) mp)