From 99d35b8a4dd5acfc633eb04f51a67dcb993750d5 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 11 Mar 2023 00:38:41 +0800 Subject: [PATCH] [mobile] support speed --- .../tv/ui/activity/DetailActivity.java | 25 ++++++++++++++++++- .../tv/ui/custom/CustomKeyDownVod.java | 25 ++++++++++--------- 2 files changed, 37 insertions(+), 13 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 b39f8644e..f17117a97 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 @@ -96,6 +96,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private Runnable mR1; private Runnable mR2; private Runnable mR3; + private Runnable mR4; public static void push(Activity activity, String url) { start(activity, "push_agent", url, url); @@ -193,6 +194,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mR1 = this::hideControl; mR2 = this::setTraffic; mR3 = this::setOrient; + mR4 = this::showTime; mSiteKey = getKey(); setRecyclerView(); setVideoView(); @@ -623,6 +625,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.widget.error.setVisibility(View.GONE); } + private void showTime() { + mBinding.widget.position.setText(mPlayers.getPositionTime(0)); + App.post(mR4, 200); + } + private void showState(int resId) { showState(resId, 0); } @@ -980,6 +987,22 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis adapter.notifyItemRangeChanged(0, adapter.getItemCount()); } + @Override + public void onSpeedUp() { + if (isLock()) return; + mPlayers.setSpeed(3.0f); + showState(R.drawable.ic_widget_forward); + showTime(); + } + + @Override + public void onSpeedReset() { + if (isLock()) return; + mPlayers.setSpeed(1.0f); + App.removeCallbacks(mR4); + hideState(); + } + @Override public void onSeeking(int time) { if (isLock()) return; @@ -1081,6 +1104,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis protected void onDestroy() { super.onDestroy(); mPlayers.release(); - App.removeCallbacks(mR1, mR2, mR3); + App.removeCallbacks(mR1, mR2, mR3, mR4); } } 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 82688ce2a..115215b2c 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 @@ -16,6 +16,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { private final Listener listener; private Runnable runnable; private boolean touch; + private boolean speed; private boolean seek; private int time; @@ -29,7 +30,8 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { } public boolean onTouchEvent(MotionEvent e) { - if (seek && e.getAction() == MotionEvent.ACTION_UP) seekDone(); + if (seek && e.getAction() == MotionEvent.ACTION_UP) seekTo(); + if (speed && e.getAction() == MotionEvent.ACTION_UP) listener.onSpeedReset(); return detector.onTouchEvent(e); } @@ -39,6 +41,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { float downX = e.getX() > width ? width : e.getX(); float edgeX = Math.abs(downX - width); touch = e.getX() > 100 && edgeX > 0; + speed = false; seek = false; return true; } @@ -46,11 +49,10 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { @Override public void onLongPress(@NonNull MotionEvent e) { int base = ResUtil.getScreenWidthPx() / 3; - boolean left = e.getX() > 0 && e.getX() < base; - boolean right = e.getX() > base * 2 && e.getX() < base * 3; - if (left) App.post(runnable = this::subTime, 0); - if (right) App.post(runnable = this::addTime, 0); - seek = left || right; + seek = e.getX() > 0 && e.getX() < base; + speed = e.getX() > base * 2 && e.getX() < base * 3; + if (seek) App.post(runnable = this::subTime, 0); + if (speed) listener.onSpeedUp(); } @Override @@ -78,11 +80,6 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { return true; } - private void addTime() { - listener.onSeeking(time = time + Constant.INTERVAL_SEEK); - App.post(runnable, getDelay()); - } - private void subTime() { listener.onSeeking(time = time - Constant.INTERVAL_SEEK); App.post(runnable, getDelay()); @@ -95,7 +92,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { else return 50; } - private void seekDone() { + private void seekTo() { App.removeCallbacks(runnable); listener.onSeekTo(time); seek = false; @@ -104,6 +101,10 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { public interface Listener { + void onSpeedUp(); + + void onSpeedReset(); + void onSeeking(int time); void onSeekTo(int time);