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 48907a261..e70e39ea4 100644 --- a/app/src/main/java/com/fongmi/bear/player/Players.java +++ b/app/src/main/java/com/fongmi/bear/player/Players.java @@ -35,7 +35,7 @@ public class Players implements Player.Listener { exoPlayer.addListener(this); } - public Players callback(Activity activity) { + public Players activity(Activity activity) { this.activity = activity; return this; } @@ -54,6 +54,10 @@ public class Players implements Player.Listener { return String.valueOf(speed); } + public boolean isIdle() { + return exoPlayer.getPlaybackState() == Player.STATE_IDLE; + } + public void setMediaSource(JsonObject object) { HashMap headers = new HashMap<>(); String parse = object.get("parse").getAsString(); 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 d98551c28..8a435b6f5 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 @@ -68,7 +68,7 @@ public class DetailActivity extends BaseActivity { @Override protected void initView() { mBinding.progressLayout.showProgress(); - mBinding.video.setPlayer(Players.get().callback(this).exo()); + mBinding.video.setPlayer(Players.get().activity(this).exo()); mBinding.video.setResizeMode(Prefers.getScale()); setRecyclerView(); setViewModel(); @@ -191,7 +191,14 @@ public class DetailActivity extends BaseActivity { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); mBinding.video.setResizeMode(Prefers.getScale()); - mBinding.video.setPlayer(Players.get().exo()); + mBinding.video.setPlayer(Players.get().activity(this).exo()); + if (data != null) checkResult(data); + } + + private void checkResult(Intent data) { + int current = data.getIntExtra("current", 0); + setEpisodeActivated((Vod.Flag.Episode) mEpisodeAdapter.get(current)); + mBinding.episode.setSelectedPosition(current); } @Override 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 9e157432b..4930a9ea7 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 @@ -57,11 +57,12 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { mVodFlag = Vod.Flag.objectFrom(getFlag()); mControl = ViewControllerBinding.bind(mBinding.video.findViewById(R.id.control)); mControl.scale.setText(ResUtil.getStringArray(R.array.select_scale)[Prefers.getScale()]); - mBinding.video.setPlayer(Players.get().callback(this).exo()); + mBinding.video.setPlayer(Players.get().activity(this).exo()); mBinding.video.setControllerHideOnTouch(false); mBinding.video.setControllerShowTimeoutMs(0); mBinding.video.setResizeMode(Prefers.getScale()); mControl.speed.setText(Players.get().getSpeed()); + if (Players.get().isIdle()) showProgress(); setViewModel(); findCurrent(); } @@ -92,12 +93,24 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { } } + private void showProgress() { + if (mBinding.progress.getRoot().getVisibility() == View.GONE) { + mBinding.progress.getRoot().setVisibility(View.VISIBLE); + } + } + + private void hideProgress() { + if (mBinding.progress.getRoot().getVisibility() == View.VISIBLE) { + mBinding.progress.getRoot().setVisibility(View.GONE); + } + } + private void getPlayer() { - mBinding.progress.getRoot().setVisibility(View.VISIBLE); Vod.Flag.Episode episode = mVodFlag.getEpisodes().get(mCurrent); mSiteViewModel.playerContent(mVodFlag.getFlag(), episode.getUrl()); Notify.show(ResUtil.getString(R.string.play_ready, episode.getName())); mVodFlag.setActivated(episode); + showProgress(); } private void onNext() { @@ -122,7 +135,8 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { @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_BUFFERING) showProgress(); + else hideProgress(); } @Override @@ -176,11 +190,18 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl { } + private void setResult() { + Intent intent = new Intent(); + intent.putExtra("current", mCurrent); + setResult(RESULT_OK, intent); + } + @Override public void onBackPressed() { if (mBinding.video.isControllerFullyVisible()) { mBinding.video.hideController(); } else { + setResult(); super.onBackPressed(); } }