mirror of
https://github.com/samsonjs/media.git
synced 2026-03-30 10:15:48 +00:00
Keep controller visible on d-pad key events
PiperOrigin-RevId: 250661977
This commit is contained in:
parent
9da9941e38
commit
9860c486e0
2 changed files with 16 additions and 5 deletions
|
|
@ -8,6 +8,8 @@
|
|||
* UI:
|
||||
* Allow setting `DefaultTimeBar` attributes on `PlayerView` and
|
||||
`PlayerControlView`.
|
||||
* Fix issue where playback controls were not kept visible on key presses
|
||||
([#5963](https://github.com/google/ExoPlayer/issues/5963)).
|
||||
* Add a playWhenReady flag to MediaSessionConnector.PlaybackPreparer methods
|
||||
to indicate whether a controller sent a play or only a prepare command. This
|
||||
allows to take advantage of decoder reuse with the MediaSessionConnector
|
||||
|
|
|
|||
|
|
@ -771,11 +771,20 @@ public class PlayerView extends FrameLayout implements AdsLoader.AdViewProvider
|
|||
if (player != null && player.isPlayingAd()) {
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
boolean isDpadWhenControlHidden =
|
||||
isDpadKey(event.getKeyCode()) && useController && !controller.isVisible();
|
||||
boolean handled =
|
||||
isDpadWhenControlHidden || dispatchMediaKeyEvent(event) || super.dispatchKeyEvent(event);
|
||||
if (handled) {
|
||||
|
||||
boolean isDpadAndUseController = isDpadKey(event.getKeyCode()) && useController;
|
||||
boolean handled = false;
|
||||
if (isDpadAndUseController && !controller.isVisible()) {
|
||||
// Handle the key event by showing the controller.
|
||||
maybeShowController(true);
|
||||
handled = true;
|
||||
} else if (dispatchMediaKeyEvent(event) || super.dispatchKeyEvent(event)) {
|
||||
// The key event was handled as a media key or by the super class. We should also show the
|
||||
// controller, or extend its show timeout if already visible.
|
||||
maybeShowController(true);
|
||||
handled = true;
|
||||
} else if (isDpadAndUseController) {
|
||||
// The key event wasn't handled, but we should extend the controller's show timeout.
|
||||
maybeShowController(true);
|
||||
}
|
||||
return handled;
|
||||
|
|
|
|||
Loading…
Reference in a new issue