From a70534a9bc8e22d4140a540ce7f8c4d5415a5c2c Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 26 Jul 2022 18:39:58 +0800 Subject: [PATCH] Auto full screen when change episode --- app/src/main/java/com/fongmi/bear/player/Players.java | 9 +++++++++ .../com/fongmi/bear/ui/activity/DetailActivity.java | 5 +++-- .../com/fongmi/bear/ui/activity/PlayActivity.java | 11 ++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/fongmi/bear/player/Players.java b/app/src/main/java/com/fongmi/bear/player/Players.java index 9685209a6..f23f48fb0 100644 --- a/app/src/main/java/com/fongmi/bear/player/Players.java +++ b/app/src/main/java/com/fongmi/bear/player/Players.java @@ -27,6 +27,7 @@ public class Players implements Player.Listener { private Formatter formatter; private ExoPlayer exoPlayer; private Handler handler; + private String videoKey; private static class Loader { static volatile Players INSTANCE = new Players(); @@ -49,6 +50,14 @@ public class Players implements Player.Listener { return exoPlayer; } + public String getVideoKey() { + return videoKey; + } + + public void setVideoKey(String videoKey) { + this.videoKey = videoKey; + } + public String getSpeed() { return String.format(Locale.getDefault(), "%.2f", exoPlayer.getPlaybackParameters().speed); } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java index 187e163b9..f279f3c30 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java @@ -47,7 +47,6 @@ public class DetailActivity extends BaseActivity { private EpisodePresenter mEpisodePresenter; private SiteViewModel mSiteViewModel; private View mOldView; - private boolean init; private String getId() { return getIntent().getStringExtra("id"); @@ -95,7 +94,8 @@ public class DetailActivity extends BaseActivity { }); mEpisodePresenter.setOnClickListener(item -> { setEpisodeActivated(item); - getPlayer(item.getUrl()); + if (Players.get().isPlaying()) mBinding.frame.performClick(); + else getPlayer(item.getUrl()); }); mBinding.frame.setOnClickListener(view -> { mBinding.video.setPlayer(null); @@ -122,6 +122,7 @@ public class DetailActivity extends BaseActivity { private void getPlayer(String id) { mBinding.progress.getRoot().setVisibility(View.VISIBLE); mSiteViewModel.playerContent(getVodFlag().getFlag(), id); + Players.get().setVideoKey(id); } private void setViewModel() { diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/PlayActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/PlayActivity.java index cce156b2d..868b51b60 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/PlayActivity.java @@ -59,7 +59,6 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { mControl.speed.setText(Players.get().getSpeed()); mBinding.video.setResizeMode(Prefers.getScale()); mBinding.video.setControllerShowTimeoutMs(3000); - mBinding.video.setPlayer(Players.get().exo()); if (Players.get().isIdle()) showProgress(); setViewModel(); findCurrent(); @@ -86,11 +85,20 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { for (int i = 0; i < mVodFlag.getEpisodes().size(); i++) { if (mVodFlag.getEpisodes().get(i).isActivated()) { mCurrent = i; + checkVideoKey(); + mBinding.video.setPlayer(Players.get().exo()); break; } } } + private void checkVideoKey() { + if (!mVodFlag.getEpisodes().get(mCurrent).getUrl().equals(Players.get().getVideoKey())) { + Players.get().stop(); + getPlayer(); + } + } + private void showProgress() { if (mBinding.progress.getRoot().getVisibility() == View.GONE) { mBinding.progress.getRoot().setVisibility(View.VISIBLE); @@ -107,6 +115,7 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { Vod.Flag.Episode episode = mVodFlag.getEpisodes().get(mCurrent); mSiteViewModel.playerContent(mVodFlag.getFlag(), episode.getUrl()); Notify.show(ResUtil.getString(R.string.play_ready, episode.getName())); + Players.get().setVideoKey(episode.getUrl()); mVodFlag.setActivated(episode); showProgress(); }