From 742e7bcc7c07bbdd507fa2a3bb9449ad293848ad Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 9 Jun 2023 09:32:53 +0800 Subject: [PATCH] Fix bug and clean code --- .../tv/ui/activity/DetailActivity.java | 2 +- .../android/tv/ui/activity/LiveActivity.java | 2 +- .../com/fongmi/android/tv/player/Players.java | 1 + .../tv/ui/activity/DetailActivity.java | 2 +- .../android/tv/ui/activity/LiveActivity.java | 2 +- .../ijk/media/player/AbstractMediaPlayer.java | 3 +- .../ijk/media/player/AndroidMediaPlayer.java | 28 +++++++++++-------- .../ijk/media/player/IMediaPlayer.java | 2 +- .../ijk/media/player/ui/IjkVideoView.java | 10 +++++-- 9 files changed, 32 insertions(+), 20 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 64ca27860..16ae1bb3f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -287,7 +287,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void setPlayerView() { mBinding.control.player.setText(mPlayers.getPlayerText()); - if (mPlayers.isIjk()) getIjk().setPlayer(mPlayers.getPlayer()); getExo().setVisibility(mPlayers.isExo() ? View.VISIBLE : View.GONE); getIjk().setVisibility(mPlayers.isIjk() ? View.VISIBLE : View.GONE); mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Prefers.getReset()]); @@ -644,6 +643,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void onPlayer() { mPlayers.togglePlayer(); + mPlayers.set(getExo(), getIjk()); Prefers.putPlayer(mPlayers.getPlayer()); mHistory.setPlayer(mPlayers.getPlayer()); setPlayerView(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 0511bf5fc..94c57e3cc 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -179,7 +179,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setPlayerView() { mBinding.control.player.setText(mPlayers.getPlayerText()); - if (mPlayers.isIjk()) getIjk().setPlayer(mPlayers.getPlayer()); getExo().setVisibility(mPlayers.isExo() ? View.VISIBLE : View.GONE); getIjk().setVisibility(mPlayers.isIjk() ? View.VISIBLE : View.GONE); } @@ -308,6 +307,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void onPlayer() { mPlayers.togglePlayer(); + mPlayers.set(getExo(), getIjk()); Prefers.putLivePlayer(mPlayers.getPlayer()); setPlayerView(); getUrl(); diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index d271daf92..55d157353 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -81,6 +81,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic private void setupIjk(IjkVideoView view) { ijkPlayer = view.render(Prefers.getRender()).decode(decode); ijkPlayer.addListener(this); + ijkPlayer.setPlayer(player); } public ExoPlayer exo() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 9816b6e5e..32c4f3385 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -281,7 +281,6 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } private void setPlayerView() { - if (mPlayers.isIjk()) getIjk().setPlayer(mPlayers.getPlayer()); mBinding.control.action.player.setText(mPlayers.getPlayerText()); getExo().setVisibility(mPlayers.isExo() ? View.VISIBLE : View.GONE); getIjk().setVisibility(mPlayers.isIjk() ? View.VISIBLE : View.GONE); @@ -595,6 +594,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust private void onPlayer() { mPlayers.togglePlayer(); + mPlayers.set(getExo(), getIjk()); Prefers.putPlayer(mPlayers.getPlayer()); mHistory.setPlayer(mPlayers.getPlayer()); setPlayerView(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index cc25cf655..cccaac1a4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -179,7 +179,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } private void setPlayerView() { - if (mPlayers.isIjk()) getIjk().setPlayer(mPlayers.getPlayer()); mBinding.control.action.player.setText(mPlayers.getPlayerText()); getExo().setVisibility(mPlayers.isExo() ? View.VISIBLE : View.GONE); getIjk().setVisibility(mPlayers.isIjk() ? View.VISIBLE : View.GONE); @@ -309,6 +308,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void onPlayer() { mPlayers.togglePlayer(); + mPlayers.set(getExo(), getIjk()); Prefers.putLivePlayer(mPlayers.getPlayer()); setPlayerView(); setR1Callback(); diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java index 5f8ed6d1e..790bd194b 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java @@ -6,8 +6,9 @@ public abstract class AbstractMediaPlayer implements IMediaPlayer { private Listener mListener; - public final void setListener(Listener listener) { + public final IMediaPlayer setListener(Listener listener) { mListener = listener; + return this; } public void resetListeners() { diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java index 222904f85..9b1b7abf8 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java @@ -34,7 +34,6 @@ import java.util.Map; import tv.danmaku.ijk.media.player.misc.AndroidTrackInfo; import tv.danmaku.ijk.media.player.misc.ITrackInfo; -import tv.danmaku.ijk.media.player.pragma.DebugLog; public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlayer.OnInfoListener, MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnTimedTextListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnVideoSizeChangedListener { @@ -132,7 +131,6 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay try { return mMediaPlayer.isPlaying(); } catch (IllegalStateException e) { - DebugLog.printStackTrace(e); return false; } } @@ -152,7 +150,6 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay try { return mMediaPlayer.getCurrentPosition(); } catch (IllegalStateException e) { - DebugLog.printStackTrace(e); return 0; } } @@ -162,7 +159,6 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay try { return mMediaPlayer.getDuration(); } catch (IllegalStateException e) { - DebugLog.printStackTrace(e); return 0; } } @@ -175,11 +171,7 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay @Override public void reset() { - try { - mMediaPlayer.reset(); - } catch (IllegalStateException e) { - DebugLog.printStackTrace(e); - } + mMediaPlayer.reset(); } @Override @@ -216,17 +208,29 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay @Override public int getSelectedTrack(int type) { - return mMediaPlayer.getSelectedTrack(type); + try { + return mMediaPlayer.getSelectedTrack(type); + } catch (Exception e) { + return 0; + } } @Override public void selectTrack(int track) { - mMediaPlayer.selectTrack(track); + try { + mMediaPlayer.selectTrack(track); + } catch (Exception e) { + e.printStackTrace(); + } } @Override public void deselectTrack(int track) { - mMediaPlayer.deselectTrack(track); + try { + mMediaPlayer.deselectTrack(track); + } catch (Exception e) { + e.printStackTrace(); + } } @Override diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java index 7115e8902..9ad6befe2 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java @@ -126,7 +126,7 @@ public interface IMediaPlayer { @Deprecated boolean isPlayable(); - void setListener(Listener listener); + IMediaPlayer setListener(Listener listener); /*-------------------- * Listeners diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java index 281409e9f..8cd87488f 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java @@ -110,8 +110,14 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } public void setPlayer(int type) { - mPlayer = type == 0 ? new AndroidMediaPlayer() : new IjkMediaPlayer(); - mPlayer.setListener(this); + switch (type) { + case 0: + mPlayer = new AndroidMediaPlayer().setListener(this); + break; + case 1: + mPlayer = new IjkMediaPlayer().setListener(this); + break; + } } public void addListener(IMediaPlayer.Listener listener) {