mirror of
https://github.com/samsonjs/media.git
synced 2026-04-08 11:45:51 +00:00
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
This commit is contained in:
parent
be103ac553
commit
f31411b128
1 changed files with 16 additions and 9 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue