From 89efc81ae3be691aa181697a856f5ca8abe7042d Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 5 Aug 2022 10:29:26 +0800 Subject: [PATCH] Auto play next --- .../tv/ui/activity/DetailActivity.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 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 cce143b86..fdbc269a1 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 @@ -79,10 +79,6 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { return (Vod.Flag) mFlagAdapter.get(mBinding.flag.getSelectedPosition()); } - private Vod.Flag.Episode getEpisode() { - return (Vod.Flag.Episode) mEpisodeAdapter.get(getEpisodePosition()); - } - private int getEpisodePosition() { for (int i = 0; i < mEpisodeAdapter.size(); i++) if (((Vod.Flag.Episode) mEpisodeAdapter.get(i)).isActivated()) return i; return 0; @@ -166,7 +162,11 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { } private void getPlayer() { - Vod.Flag.Episode item = getEpisode(); + getPlayer(getEpisodePosition()); + } + + private void getPlayer(int position) { + Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(position); if (mFullscreen) Notify.show(ResUtil.getString(R.string.play_ready, item.getName())); mSiteViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl()); mBinding.progress.getRoot().setVisibility(View.VISIBLE); @@ -209,11 +209,10 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { for (int i = 0; i < mFlagAdapter.size(); i++) { Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(i); flag.setActivated(flag.equals(item)); - if (flag.isActivated()) { - mBinding.flag.setSelectedPosition(i); - mEpisodeAdapter.setItems(flag.getEpisodes(), null); - setGroup(flag.getEpisodes().size()); - } + if (!flag.isActivated()) continue; + mBinding.flag.setSelectedPosition(i); + mEpisodeAdapter.setItems(flag.getEpisodes(), null); + setGroup(flag.getEpisodes().size()); } mFlagAdapter.notifyArrayItemRangeChanged(0, mFlagAdapter.size()); } @@ -226,8 +225,9 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { else flag.deactivated(); } mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); - mHandler.post(() -> mBinding.episode.setSelectedPosition(getEpisodePosition())); - getPlayer(); + int position = getEpisodePosition(); + mHandler.post(() -> mBinding.episode.setSelectedPosition(position)); + getPlayer(position); } private void setGroup(int size) { @@ -316,6 +316,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { @Subscribe(threadMode = ThreadMode.MAIN) public void onPlaybackStateChanged(PlayerEvent event) { mBinding.progress.getRoot().setVisibility(event.getState() == Player.STATE_BUFFERING ? View.VISIBLE : View.GONE); + if (event.getState() == Player.STATE_ENDED) onNext(); Notify.show(event.getMsg()); }