From 937feddafa307ec8f8a07634166fe5a35ef5fc13 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sun, 10 Jan 2016 17:17:12 +0100 Subject: Refactor --- .../antennapod/activity/MediaplayerActivity.java | 23 ++- .../antennapod/activity/VideoplayerActivity.java | 177 +++++++++------------ app/src/main/res/layout/videoplayer_activity.xml | 4 +- 3 files changed, 87 insertions(+), 117 deletions(-) (limited to 'app/src/main') 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 1778bffb1..396adbd81 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -672,12 +672,13 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O return; } + String length; if (showTimeLeft) { - txtvLength.setText("-" + Converter.getDurationStringLong((media - .getDuration() - media.getPosition()))); + length = "-" + Converter.getDurationStringLong(media.getDuration() - media.getPosition()); } else { - txtvLength.setText(Converter.getDurationStringLong((media.getDuration()))); + length = Converter.getDurationStringLong(media.getDuration()); } + txtvLength.setText(length); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(PREF_SHOW_TIME_LEFT, showTimeLeft); @@ -765,8 +766,7 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O if (rewindSecs == values[i]) { checked = i; } - choices[i] = String.valueOf(values[i]) + " " - + getString(R.string.time_seconds); + choices[i] = String.valueOf(values[i]) + " " + getString(R.string.time_seconds); } choice = values[checked]; AlertDialog.Builder builder = new AlertDialog.Builder(MediaplayerActivity.this); @@ -807,8 +807,7 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O if (rewindSecs == values[i]) { checked = i; } - choices[i] = String.valueOf(values[i]) + " " - + getString(R.string.time_seconds); + choices[i] = String.valueOf(values[i]) + " " + getString(R.string.time_seconds); } choice = values[checked]; AlertDialog.Builder builder = new AlertDialog.Builder(MediaplayerActivity.this); @@ -854,15 +853,13 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O float prog; @Override - public void onProgressChanged(SeekBar seekBar, int progress, - boolean fromUser) { + public void onProgressChanged (SeekBar seekBar,int progress, boolean fromUser) { if (controller != null) { - prog = controller.onSeekBarProgressChanged(seekBar, progress, fromUser, - txtvPosition); + prog = controller.onSeekBarProgressChanged(seekBar, progress, fromUser, txtvPosition); if (showTimeLeft && prog != 0) { int duration = controller.getDuration(); - txtvLength.setText("-" + Converter - .getDurationStringLong(duration - (int) (prog * duration))); + String length = "-" + Converter.getDurationStringLong(duration - (int) (prog * duration)); + txtvLength.setText(length); } } } 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 60eb290b5..8d5ca5403 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -3,9 +3,9 @@ package de.danoeh.antennapod.activity; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.drawable.ColorDrawable; -import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.support.v4.view.WindowCompat; import android.util.Log; import android.util.Pair; @@ -19,7 +19,8 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.SeekBar; -import de.danoeh.antennapod.BuildConfig; +import java.lang.ref.WeakReference; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.service.playback.PlaybackService; @@ -39,7 +40,8 @@ public class VideoplayerActivity extends MediaplayerActivity { */ private boolean videoControlsShowing = true; private boolean videoSurfaceCreated = false; - private VideoControlsHider videoControlsToggler; + + private VideoControlsHider videoControlsHider = new VideoControlsHider(this); private LinearLayout videoOverlay; private AspectRatioVideoView videoview; @@ -60,26 +62,13 @@ public class VideoplayerActivity extends MediaplayerActivity { getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0x80000000)); } - @Override - protected void onPause() { - super.onPause(); - if (videoControlsToggler != null) { - videoControlsToggler.cancel(true); - } - if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) { - controller.pause(); - } - } - @Override protected void onResume() { super.onResume(); if (getIntent().getAction() != null && getIntent().getAction().equals(Intent.ACTION_VIEW)) { Intent intent = getIntent(); - if (BuildConfig.DEBUG) - Log.d(TAG, "Received VIEW intent: " - + intent.getData().getPath()); + Log.d(TAG, "Received VIEW intent: " + intent.getData().getPath()); ExternalMedia media = new ExternalMedia(intent.getData().getPath(), MediaType.VIDEO); Intent launchIntent = new Intent(this, PlaybackService.class); @@ -93,6 +82,22 @@ public class VideoplayerActivity extends MediaplayerActivity { } } + @Override + protected void onPause() { + super.onPause(); + videoControlsHider.stop(); + if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) { + controller.pause(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + videoControlsHider.stop(); + videoControlsHider = null; + } + @Override protected boolean loadMediaInfo() { if (!super.loadMediaInfo()) { @@ -104,7 +109,6 @@ public class VideoplayerActivity extends MediaplayerActivity { getSupportActionBar().setTitle(media.getFeedTitle()); return true; } - return false; } @@ -133,14 +137,11 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onAwaitingVideoSurface() { if (videoSurfaceCreated) { - if (BuildConfig.DEBUG) - Log.d(TAG, - "Videosurface already created, setting videosurface now"); + Log.d(TAG, "Videosurface already created, setting videosurface now"); Pair videoSize = controller.getVideoSize(); if (videoSize != null && videoSize.first > 0 && videoSize.second > 0) { - if (BuildConfig.DEBUG) - Log.d(TAG, "Width,height of video: " + videoSize.first + ", " + videoSize.second); + Log.d(TAG, "Width,height of video: " + videoSize.first + ", " + videoSize.second); videoview.setVideoSize(videoSize.first, videoSize.second); } else { Log.e(TAG, "Could not determine video size"); @@ -156,7 +157,6 @@ public class VideoplayerActivity extends MediaplayerActivity { } else { progressIndicator.setVisibility(View.INVISIBLE); } - } @Override @@ -164,38 +164,23 @@ public class VideoplayerActivity extends MediaplayerActivity { progressIndicator.setVisibility(View.INVISIBLE); } - View.OnTouchListener onVideoviewTouched = new View.OnTouchListener() { - - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (videoControlsToggler != null) { - videoControlsToggler.cancel(true); - } - toggleVideoControlsVisibility(); - if (videoControlsShowing) { - setupVideoControlsToggler(); - } - - return true; - } else { - return false; + View.OnTouchListener onVideoviewTouched = (v, event) -> { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + videoControlsHider.stop(); + toggleVideoControlsVisibility(); + if (videoControlsShowing) { + setupVideoControlsToggler(); } + return true; + } else { + return false; } }; @SuppressLint("NewApi") void setupVideoControlsToggler() { - if (videoControlsToggler != null) { - videoControlsToggler.cancel(true); - } - videoControlsToggler = new VideoControlsHider(); - if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) { - videoControlsToggler - .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } else { - videoControlsToggler.execute(); - } + videoControlsHider.stop(); + videoControlsHider.start(); } private void toggleVideoControlsVisibility() { @@ -209,46 +194,6 @@ public class VideoplayerActivity extends MediaplayerActivity { videoControlsShowing = !videoControlsShowing; } - /** - * Hides the videocontrols after a certain period of time. - */ - public class VideoControlsHider extends AsyncTask { - @Override - protected void onCancelled() { - videoControlsToggler = null; - } - - @Override - protected void onPostExecute(Void result) { - videoControlsToggler = null; - } - - private static final int WAITING_INTERVALL = 5000; - private static final String TAG = "VideoControlsToggler"; - - @Override - protected void onProgressUpdate(Void... values) { - if (videoControlsShowing) { - if (BuildConfig.DEBUG) - Log.d(TAG, "Hiding video controls"); - getSupportActionBar().hide(); - hideVideoControls(); - videoControlsShowing = false; - } - } - - @Override - protected Void doInBackground(Void... params) { - try { - Thread.sleep(WAITING_INTERVALL); - } catch (InterruptedException e) { - return null; - } - publishProgress(); - return null; - } - - } private final SurfaceHolder.Callback surfaceHolderCallback = new SurfaceHolder.Callback() { @Override @@ -259,15 +204,13 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public void surfaceCreated(SurfaceHolder holder) { - if (BuildConfig.DEBUG) - Log.d(TAG, "Videoview holder created"); + Log.d(TAG, "Videoview holder created"); videoSurfaceCreated = true; if (controller.getStatus() == PlayerStatus.PLAYING) { if (controller.serviceAvailable()) { controller.setVideoSurface(holder); } else { - Log.e(TAG, - "Could'nt attach surface to mediaplayer - reference to service was null"); + Log.e(TAG, "Could'nt attach surface to mediaplayer - reference to service was null"); } } @@ -275,8 +218,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public void surfaceDestroyed(SurfaceHolder holder) { - if (BuildConfig.DEBUG) - Log.d(TAG, "Videosurface was destroyed"); + Log.d(TAG, "Videosurface was destroyed"); videoSurfaceCreated = false; controller.notifyVideoSurfaceAbandoned(); } @@ -286,9 +228,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onReloadNotification(int notificationCode) { if (notificationCode == PlaybackService.EXTRA_CODE_AUDIO) { - if (BuildConfig.DEBUG) - Log.d(TAG, - "ReloadNotification received, switching to Audioplayer now"); + Log.d(TAG, "ReloadNotification received, switching to Audioplayer now"); finish(); startActivity(new Intent(this, AudioplayerActivity.class)); } @@ -297,9 +237,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public void onStartTrackingTouch(SeekBar seekBar) { super.onStartTrackingTouch(seekBar); - if (videoControlsToggler != null) { - videoControlsToggler.cancel(true); - } + videoControlsHider.stop(); } @Override @@ -356,7 +294,6 @@ public class VideoplayerActivity extends MediaplayerActivity { return R.layout.videoplayer_activity; } - @Override protected void setScreenOn(boolean enable) { super.setScreenOn(enable); @@ -366,4 +303,38 @@ public class VideoplayerActivity extends MediaplayerActivity { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } } + + private static class VideoControlsHider extends Handler { + + private static final int DELAY = 5000; + + private WeakReference activity; + + public VideoControlsHider(VideoplayerActivity activity) { + this.activity = new WeakReference<>(activity); + } + + private final Runnable hideVideoControls = () -> { + VideoplayerActivity vpa = activity.get(); + if(vpa == null) { + return; + } + if (vpa.videoControlsShowing) { + Log.d(TAG, "Hiding video controls"); + vpa.getSupportActionBar().hide(); + vpa.hideVideoControls(); + vpa.videoControlsShowing = false; + } + }; + + public void start() { + this.postDelayed(hideVideoControls, DELAY); + } + + public void stop() { + this.removeCallbacks(hideVideoControls); + } + + } + } diff --git a/app/src/main/res/layout/videoplayer_activity.xml b/app/src/main/res/layout/videoplayer_activity.xml index 766cd6e04..1775a94dc 100644 --- a/app/src/main/res/layout/videoplayer_activity.xml +++ b/app/src/main/res/layout/videoplayer_activity.xml @@ -77,7 +77,9 @@ android:layout_toLeftOf="@+id/txtvLength" android:layout_toRightOf="@+id/txtvPosition" android:max="500" /> + + - \ No newline at end of file + -- cgit v1.2.3