From d0d81c3df4a6111f9bc00a098dd3b0a7c79f33e4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 1 Mar 2023 00:51:26 +0800 Subject: [PATCH] [mobile] support double tap to forward and rewind --- .../tv/ui/activity/DetailActivity.java | 30 ++++++++++++++----- .../tv/ui/custom/CustomKeyDownVod.java | 29 ++++++++---------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index e06e8f745..665886578 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -559,13 +559,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis if (mPlayers.haveTrack(C.TRACK_TYPE_TEXT)) popup.getMenu().add(0, C.TRACK_TYPE_TEXT, 0, R.string.play_track_text); if (mPlayers.haveTrack(C.TRACK_TYPE_AUDIO)) popup.getMenu().add(0, C.TRACK_TYPE_AUDIO, 1, R.string.play_track_audio); if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) popup.getMenu().add(0, C.TRACK_TYPE_VIDEO, 2, R.string.play_track_video); - popup.setOnMenuItemClickListener(item -> { - TrackDialog.create().player(mPlayers).type(item.getItemId()).listener(this).show(getSupportFragmentManager(), null); - return true; - }); - if (popup.getMenu().size() > 0) { - popup.show(); - } + popup.setOnMenuItemClickListener(item -> onTrack(item.getItemId())); + popup.show(); + } + + private boolean onTrack(int type) { + TrackDialog.create().player(mPlayers).type(type).listener(this).show(getSupportFragmentManager(), null); + return true; } private void toggleFullscreen() { @@ -869,7 +869,21 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } @Override - public void onDoubleTap() { + public void onDoubleTapLeft() { + mPlayers.seekTo(-15 * 1000); + showProgress(); + onPlay(); + } + + @Override + public void onDoubleTapRight() { + mPlayers.seekTo(15 * 1000); + showProgress(); + onPlay(); + } + + @Override + public void onDoubleTapCenter() { if (mPlayers.isPlaying()) onPause(true); else onPlay(); hideControl(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java index 7fd1d612e..786c4ae25 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java @@ -6,13 +6,12 @@ import android.view.MotionEvent; import androidx.annotation.NonNull; -import com.fongmi.android.tv.Constant; +import com.fongmi.android.tv.utils.ResUtil; public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { private final GestureDetector detector; private final Listener listener; - private int holdTime; public static CustomKeyDownVod create(Context context) { return new CustomKeyDownVod(context); @@ -29,7 +28,13 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { @Override public boolean onDoubleTap(@NonNull MotionEvent e) { - listener.onDoubleTap(); + int base = ResUtil.getScreenWidthPx() / 3; + boolean left = e.getX() > 0 && e.getX() < base; + boolean center = e.getX() > base && e.getX() < base * 2; + boolean right = e.getX() > base * 2 && e.getX() < base * 3; + if (left) listener.onDoubleTapLeft(); + if (right) listener.onDoubleTapRight(); + if (center) listener.onDoubleTapCenter(); return true; } @@ -39,22 +44,14 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { return true; } - private int addTime() { - return holdTime = holdTime + Constant.INTERVAL_SEEK; - } - - private int subTime() { - return holdTime = holdTime - Constant.INTERVAL_SEEK; - } - - public void resetTime() { - holdTime = 0; - } - public interface Listener { void onSingleTap(); - void onDoubleTap(); + void onDoubleTapLeft(); + + void onDoubleTapRight(); + + void onDoubleTapCenter(); } } \ No newline at end of file