From 8f3f0c30c620548bb983624e311763306e95ae62 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 18 Feb 2016 08:38:57 +0100 Subject: Delay control hiding when button pressed --- .../antennapod/activity/MediaplayerActivity.java | 33 +++++++++++-- .../antennapod/activity/VideoplayerActivity.java | 18 ++++++++ .../fragment/ExternalPlayerFragment.java | 14 ++++-- .../core/util/playback/PlaybackController.java | 54 +++++++++++----------- 4 files changed, 82 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index d22fad320..a22a455e7 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -763,8 +763,7 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O if (butRev != null) { butRev.setOnClickListener(v -> { - int curr = controller.getPosition(); - controller.seekTo(curr - UserPreferences.getRewindSecs() * 1000); + onRewind(); }); butRev.setOnLongClickListener(new View.OnLongClickListener() { @@ -800,12 +799,13 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O }); } - butPlay.setOnClickListener(controller.newOnPlayButtonClickListener()); + butPlay.setOnClickListener(v -> { + onPlayPause(); + }); if (butFF != null) { butFF.setOnClickListener(v -> { - int curr = controller.getPosition(); - controller.seekTo(curr + UserPreferences.getFastFowardSecs() * 1000); + onFastForward(); }); butFF.setOnLongClickListener(new View.OnLongClickListener() { @@ -848,6 +848,29 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O } } + protected void onRewind() { + if (controller == null) { + return; + } + int curr = controller.getPosition(); + controller.seekTo(curr - UserPreferences.getRewindSecs() * 1000); + } + + protected void onPlayPause() { + if(controller == null) { + return; + } + controller.playPause(); + } + + protected void onFastForward() { + if (controller == null) { + return; + } + int curr = controller.getPosition(); + controller.seekTo(curr + UserPreferences.getFastFowardSecs() * 1000); + } + protected abstract int getContentViewResourceId(); void handleError(int errorCode) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java index ee459dbc6..3ed9813aa 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -202,6 +202,24 @@ public class VideoplayerActivity extends MediaplayerActivity { videoControlsShowing = !videoControlsShowing; } + @Override + protected void onRewind() { + super.onRewind(); + setupVideoControlsToggler(); + } + + @Override + protected void onPlayPause() { + super.onPlayPause(); + setupVideoControlsToggler(); + } + + @Override + protected void onFastForward() { + super.onFastForward(); + setupVideoControlsToggler(); + } + private final SurfaceHolder.Callback surfaceHolderCallback = new SurfaceHolder.Callback() { @Override diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java index 80a9bf0b3..3fd69214d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java @@ -72,7 +72,11 @@ public class ExternalPlayerFragment extends Fragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); controller = setupPlaybackController(); - butPlay.setOnClickListener(controller.newOnPlayButtonClickListener()); + butPlay.setOnClickListener(v -> { + if(controller != null) { + controller.playPause(); + } + }); } private PlaybackController setupPlaybackController() { @@ -88,7 +92,6 @@ public class ExternalPlayerFragment extends Fragment { return butPlay; } - @Override public boolean loadMediaInfo() { ExternalPlayerFragment fragment = ExternalPlayerFragment.this; @@ -145,8 +148,11 @@ public class ExternalPlayerFragment extends Fragment { } controller = setupPlaybackController(); if (butPlay != null) { - butPlay.setOnClickListener(controller - .newOnPlayButtonClickListener()); + butPlay.setOnClickListener(v -> { + if(controller != null) { + controller.playPause(); + } + }); } controller.init(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index 27935978c..0a1a0540c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -574,34 +574,32 @@ public abstract class PlaybackController { } - public OnClickListener newOnPlayButtonClickListener() { - return v -> { - if (playbackService == null) { - Log.w(TAG, "Play/Pause button was pressed, but playbackservice was null!"); - return; - } - switch (status) { - case PLAYING: - playbackService.pause(true, reinitOnPause); - break; - case PAUSED: - case PREPARED: - playbackService.resume(); - break; - case PREPARING: - playbackService.setStartWhenPrepared(!playbackService - .isStartWhenPrepared()); - if (reinitOnPause - && playbackService.isStartWhenPrepared() == false) { - playbackService.reinit(); - } - break; - case INITIALIZED: - playbackService.setStartWhenPrepared(true); - playbackService.prepare(); - break; - } - }; + public void playPause() { + if (playbackService == null) { + Log.w(TAG, "Play/Pause button was pressed, but playbackservice was null!"); + return; + } + switch (status) { + case PLAYING: + playbackService.pause(true, reinitOnPause); + break; + case PAUSED: + case PREPARED: + playbackService.resume(); + break; + case PREPARING: + playbackService.setStartWhenPrepared(!playbackService + .isStartWhenPrepared()); + if (reinitOnPause + && playbackService.isStartWhenPrepared() == false) { + playbackService.reinit(); + } + break; + case INITIALIZED: + playbackService.setStartWhenPrepared(true); + playbackService.prepare(); + break; + } } public boolean serviceAvailable() { -- cgit v1.2.3