Commit f31411b1 by insun Committed by Oliver Woodman

Revise Play/Pause button toggling logic

This CL fixes two bugs:
- Play/pause button toggling looked inconsistent when playback fails.
  When player state goes into idle, play button should dispatch
  playwhenready again.
- Clicking play button at the end of stream should restart playback.
  But previously it changed playwhenready state and so playback has
  been paused. This CL fix it.

PiperOrigin-RevId: 329675660
parent be103ac5
......@@ -1646,7 +1646,7 @@ public class StyledPlayerControlView extends FrameLayout {
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_HEADSETHOOK:
controlDispatcher.dispatchSetPlayWhenReady(player, !player.getPlayWhenReady());
dispatchPlayPause(player);
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
controlDispatcher.dispatchSetPlayWhenReady(player, true);
......@@ -1815,14 +1815,7 @@ public class StyledPlayerControlView extends FrameLayout {
} else if (rewindButton == view) {
controlDispatcher.dispatchRewind(player);
} else if (playPauseButton == view) {
if (player.getPlaybackState() == Player.STATE_IDLE) {
if (playbackPreparer != null) {
playbackPreparer.preparePlayback();
}
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
}
controlDispatcher.dispatchSetPlayWhenReady(player, !player.getPlayWhenReady());
dispatchPlayPause(player);
} else if (repeatToggleButton == view) {
controlDispatcher.dispatchSetRepeatMode(
player, RepeatModeUtil.getNextRepeatMode(player.getRepeatMode(), repeatToggleModes));
......@@ -1838,6 +1831,20 @@ public class StyledPlayerControlView extends FrameLayout {
}
}
private void dispatchPlayPause(Player player) {
if (player.getPlaybackState() == Player.STATE_IDLE) {
if (playbackPreparer != null) {
playbackPreparer.preparePlayback();
}
controlDispatcher.dispatchSetPlayWhenReady(player, true);
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
controlDispatcher.dispatchSetPlayWhenReady(player, true);
} else {
controlDispatcher.dispatchSetPlayWhenReady(player, !player.getPlayWhenReady());
}
}
private class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder> {
private final String[] mainTexts;
private final String[] subTexts;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment