Merge pull request #2434 from AntennaPod/issue/2413-videoplayer-castexception

Cast according to mediaplayer instance type, not media type
This commit is contained in:
Martin Fietz 2017-10-08 15:54:47 +02:00 committed by GitHub
commit 1732664b57

View File

@ -300,7 +300,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
/** /**
* Called after media player has been prepared. This method is executed on the caller's thread. * Called after media player has been prepared. This method is executed on the caller's thread.
*/ */
void onPrepared(final boolean startWhenPrepared) { private void onPrepared(final boolean startWhenPrepared) {
playerLock.lock(); playerLock.lock();
if (playerStatus != PlayerStatus.PREPARING) { if (playerStatus != PlayerStatus.PREPARING) {
@ -688,18 +688,22 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
media = playable; media = playable;
} }
private IPlayer createMediaPlayer() { private void createMediaPlayer() {
if (mediaPlayer != null) { if (mediaPlayer != null) {
mediaPlayer.release(); mediaPlayer.release();
} }
if (media == null || media.getMediaType() == MediaType.VIDEO) { if(media == null) {
mediaPlayer = null;
return;
}
if (media.getMediaType() == MediaType.VIDEO) {
mediaPlayer = new VideoPlayer(); mediaPlayer = new VideoPlayer();
} else { } else {
mediaPlayer = new AudioPlayer(context); mediaPlayer = new AudioPlayer(context);
} }
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK); mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
return setMediaPlayerListeners(mediaPlayer); setMediaPlayerListeners(mediaPlayer);
} }
private final AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() { private final AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
@ -855,14 +859,20 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
if (mp == null || media == null) { if (mp == null || media == null) {
return mp; return mp;
} }
if (media.getMediaType() == MediaType.VIDEO) { if (mp instanceof VideoPlayer) {
if (media.getMediaType() != MediaType.VIDEO) {
Log.w(TAG, "video player, but media type is " + media.getMediaType());
}
VideoPlayer vp = (VideoPlayer) mp; VideoPlayer vp = (VideoPlayer) mp;
vp.setOnCompletionListener(videoCompletionListener); vp.setOnCompletionListener(videoCompletionListener);
vp.setOnSeekCompleteListener(videoSeekCompleteListener); vp.setOnSeekCompleteListener(videoSeekCompleteListener);
vp.setOnErrorListener(videoErrorListener); vp.setOnErrorListener(videoErrorListener);
vp.setOnBufferingUpdateListener(videoBufferingUpdateListener); vp.setOnBufferingUpdateListener(videoBufferingUpdateListener);
vp.setOnInfoListener(videoInfoListener); vp.setOnInfoListener(videoInfoListener);
} else { } else if (mp instanceof AudioPlayer) {
if (media.getMediaType() != MediaType.AUDIO) {
Log.w(TAG, "audio player, but media type is " + media.getMediaType());
}
AudioPlayer ap = (AudioPlayer) mp; AudioPlayer ap = (AudioPlayer) mp;
ap.setOnCompletionListener(audioCompletionListener); ap.setOnCompletionListener(audioCompletionListener);
ap.setOnSeekCompleteListener(audioSeekCompleteListener); ap.setOnSeekCompleteListener(audioSeekCompleteListener);
@ -870,6 +880,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
ap.setOnBufferingUpdateListener(audioBufferingUpdateListener); ap.setOnBufferingUpdateListener(audioBufferingUpdateListener);
ap.setOnInfoListener(audioInfoListener); ap.setOnInfoListener(audioInfoListener);
ap.setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener); ap.setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener);
} else {
Log.w(TAG, "Unknown media player: " + mp);
} }
return mp; return mp;
} }