Resolved problems with ending playback.
- OnPreparedListener removed: not necessary anymore, because end of preparing playback is handled manually
This commit is contained in:
parent
f278eaf74d
commit
0b735b6026
@ -363,6 +363,10 @@ public class PlaybackService extends Service {
|
|||||||
public void statusChanged(PlaybackServiceMediaPlayer.PSMPInfo newInfo) {
|
public void statusChanged(PlaybackServiceMediaPlayer.PSMPInfo newInfo) {
|
||||||
currentMediaType = mediaPlayer.getCurrentMediaType();
|
currentMediaType = mediaPlayer.getCurrentMediaType();
|
||||||
switch (newInfo.playerStatus) {
|
switch (newInfo.playerStatus) {
|
||||||
|
case INITIALIZED:
|
||||||
|
writePlaybackPreferences();
|
||||||
|
break;
|
||||||
|
|
||||||
case PREPARED:
|
case PREPARED:
|
||||||
taskManager.startChapterLoader(newInfo.playable);
|
taskManager.startChapterLoader(newInfo.playable);
|
||||||
break;
|
break;
|
||||||
@ -385,7 +389,6 @@ public class PlaybackService extends Service {
|
|||||||
if (AppConfig.DEBUG)
|
if (AppConfig.DEBUG)
|
||||||
Log.d(TAG, "Resuming/Starting playback");
|
Log.d(TAG, "Resuming/Starting playback");
|
||||||
|
|
||||||
writePlaybackPreferences();
|
|
||||||
taskManager.startPositionSaver();
|
taskManager.startPositionSaver();
|
||||||
taskManager.startWidgetUpdater();
|
taskManager.startWidgetUpdater();
|
||||||
setupNotification(newInfo);
|
setupNotification(newInfo);
|
||||||
@ -444,7 +447,7 @@ public class PlaybackService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean endPlayback(boolean playNextEpisode) {
|
public boolean endPlayback(boolean playNextEpisode) {
|
||||||
endPlayback(true);
|
PlaybackService.this.endPlayback(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +112,13 @@ public class PlaybackServiceMediaPlayer {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
playerLock.lock();
|
playerLock.lock();
|
||||||
playMediaObject(playable, false, stream, startWhenPrepared, prepareImmediately);
|
try {
|
||||||
playerLock.unlock();
|
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);
|
setPlayerStatus(PlayerStatus.INDETERMINATE, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createMediaPlayer();
|
|
||||||
this.media = playable;
|
this.media = playable;
|
||||||
this.stream = stream;
|
this.stream = stream;
|
||||||
this.mediaType = media.getMediaType();
|
this.mediaType = media.getMediaType();
|
||||||
this.videoSize = null;
|
this.videoSize = null;
|
||||||
|
createMediaPlayer();
|
||||||
PlaybackServiceMediaPlayer.this.startWhenPrepared.set(startWhenPrepared);
|
PlaybackServiceMediaPlayer.this.startWhenPrepared.set(startWhenPrepared);
|
||||||
setPlayerStatus(PlayerStatus.INITIALIZING, media);
|
setPlayerStatus(PlayerStatus.INITIALIZING, media);
|
||||||
try {
|
try {
|
||||||
@ -313,8 +319,10 @@ public class PlaybackServiceMediaPlayer {
|
|||||||
void onPrepared(final boolean startWhenPrepared) {
|
void onPrepared(final boolean startWhenPrepared) {
|
||||||
playerLock.lock();
|
playerLock.lock();
|
||||||
|
|
||||||
if (playerStatus != PlayerStatus.PREPARING)
|
if (playerStatus != PlayerStatus.PREPARING) {
|
||||||
|
playerLock.unlock();
|
||||||
throw new IllegalStateException("Player is not in PREPARING state");
|
throw new IllegalStateException("Player is not in PREPARING state");
|
||||||
|
}
|
||||||
|
|
||||||
if (AppConfig.DEBUG)
|
if (AppConfig.DEBUG)
|
||||||
Log.d(TAG, "Resource prepared");
|
Log.d(TAG, "Resource prepared");
|
||||||
@ -760,34 +768,9 @@ public class PlaybackServiceMediaPlayer {
|
|||||||
public RemoteControlClient getRemoteControlClient();
|
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) {
|
private IPlayer setMediaPlayerListeners(IPlayer mp) {
|
||||||
if (mp != null && media != null) {
|
if (mp != null && media != null) {
|
||||||
if (media.getMediaType() == MediaType.AUDIO) {
|
if (media.getMediaType() == MediaType.AUDIO) {
|
||||||
((AudioPlayer) mp).setOnPreparedListener(audioPreparedListener);
|
|
||||||
((AudioPlayer) mp)
|
((AudioPlayer) mp)
|
||||||
.setOnCompletionListener(audioCompletionListener);
|
.setOnCompletionListener(audioCompletionListener);
|
||||||
((AudioPlayer) mp)
|
((AudioPlayer) mp)
|
||||||
@ -797,7 +780,6 @@ public class PlaybackServiceMediaPlayer {
|
|||||||
.setOnBufferingUpdateListener(audioBufferingUpdateListener);
|
.setOnBufferingUpdateListener(audioBufferingUpdateListener);
|
||||||
((AudioPlayer) mp).setOnInfoListener(audioInfoListener);
|
((AudioPlayer) mp).setOnInfoListener(audioInfoListener);
|
||||||
} else {
|
} else {
|
||||||
((VideoPlayer) mp).setOnPreparedListener(videoPreparedListener);
|
|
||||||
((VideoPlayer) mp)
|
((VideoPlayer) mp)
|
||||||
.setOnCompletionListener(videoCompletionListener);
|
.setOnCompletionListener(videoCompletionListener);
|
||||||
((VideoPlayer) mp)
|
((VideoPlayer) mp)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user