pull/586/head
FongMi 10 months ago
parent 87a9a0d229
commit c8443eada1
  1. 32
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 21
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java

@ -683,30 +683,34 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void checkNext() {
if (mHistory.isRevPlay()) onPrev();
else onNext();
checkNext(true);
}
private void checkNext(boolean notify) {
if (mHistory.isRevPlay()) onPrev(notify);
else onNext(notify);
}
private void checkPrev() {
if (mHistory.isRevPlay()) onNext();
else onPrev();
if (mHistory.isRevPlay()) onNext(true);
else onPrev(true);
}
private void onNext() {
private void onNext(boolean notify) {
int current = getEpisodePosition();
int max = mEpisodeAdapter.size() - 1;
current = ++current > max ? max : current;
Episode item = (Episode) mEpisodeAdapter.get(current);
if (item.isActivated()) Notify.show(mHistory.isRevPlay() ? R.string.error_play_prev : R.string.error_play_next);
else setEpisodeActivated(item);
if (!item.isActivated()) setEpisodeActivated(item);
else if (notify) Notify.show(mHistory.isRevPlay() ? R.string.error_play_prev : R.string.error_play_next);
}
private void onPrev() {
private void onPrev(boolean notify) {
int current = getEpisodePosition();
current = --current < 0 ? 0 : current;
Episode item = (Episode) mEpisodeAdapter.get(current);
if (item.isActivated()) Notify.show(mHistory.isRevPlay() ? R.string.error_play_next : R.string.error_play_prev);
else setEpisodeActivated(item);
if (!item.isActivated()) setEpisodeActivated(item);
else if (notify) Notify.show(mHistory.isRevPlay() ? R.string.error_play_next : R.string.error_play_prev);
}
private void onScale() {
@ -1000,7 +1004,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mHistory.setDuration(duration = mPlayers.getDuration());
if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update());
if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) {
checkEnded();
checkEnded(false);
}
}
@ -1041,7 +1045,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
hideProgress();
break;
case Player.STATE_ENDED:
checkEnded();
checkEnded(true);
break;
case PlayerEvent.TRACK:
setMetadata();
@ -1060,12 +1064,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (mHistory != null) mPlayers.seekTo(Math.max(mHistory.getOpening(), mHistory.getPosition()));
}
private void checkEnded() {
private void checkEnded(boolean notify) {
if (mBinding.control.loop.isActivated()) {
onReset(true);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
checkNext();
checkNext(notify);
}
}

@ -554,6 +554,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mFlagAdapter.toggle(item);
notifyItemChanged(mEpisodeAdapter);
mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition());
if (isFullscreen()) Notify.show(getString(R.string.play_ready, item.getName()));
onRefresh();
}
@ -677,17 +678,21 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void checkNext() {
checkNext(true);
}
private void checkNext(boolean notify) {
setR1Callback();
Episode item = mEpisodeAdapter.getNext();
if (item.isActivated()) Notify.show(R.string.error_play_next);
else onItemClick(item);
if (!item.isActivated()) onItemClick(item);
else if (notify) Notify.show(R.string.error_play_next);
}
private void checkPrev() {
setR1Callback();
Episode item = mEpisodeAdapter.getPrev();
if (item.isActivated()) Notify.show(R.string.error_play_prev);
else onItemClick(item);
if (!item.isActivated()) onItemClick(item);
else Notify.show(R.string.error_play_prev);
}
private void onSetting() {
@ -1038,7 +1043,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mHistory.setDuration(duration = mPlayers.getDuration());
if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update());
if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) {
checkEnded();
checkEnded(false);
}
}
@ -1086,7 +1091,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
checkPlayImg(mPlayers.isPlaying());
break;
case Player.STATE_ENDED:
checkEnded();
checkEnded(true);
break;
case PlayerEvent.TRACK:
setMetadata();
@ -1113,13 +1118,13 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
}
private void checkEnded() {
private void checkEnded(boolean notify) {
if (mBinding.control.action.loop.isActivated()) {
onReset(true);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
checkPlayImg(false);
checkNext();
checkNext(notify);
}
}

@ -107,8 +107,8 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis
binding.text.setOnClickListener(v -> dismiss(parent.control.action.text));
binding.audio.setOnClickListener(v -> dismiss(parent.control.action.audio));
binding.video.setOnClickListener(v -> dismiss(parent.control.action.video));
binding.player.setOnClickListener(v -> dismiss(parent.control.action.player));
binding.loop.setOnClickListener(v -> active(binding.loop, parent.control.action.loop));
binding.player.setOnClickListener(v -> click(binding.player, parent.control.action.player));
binding.decode.setOnClickListener(v -> click(binding.decode, parent.control.action.decode));
binding.ending.setOnClickListener(v -> click(binding.ending, parent.control.action.ending));
binding.opening.setOnClickListener(v -> click(binding.opening, parent.control.action.opening));

Loading…
Cancel
Save