diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 8f76fb758..a72803fb1 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -46,7 +46,6 @@ import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Traffic; -import com.fongmi.android.tv.utils.Utils; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.ui.StyledPlayerView; @@ -522,10 +521,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (Utils.isMenuKey(event)) onLongPress(); if (isVisible(mBinding.control.getRoot())) setR3Callback(); - if (mGroup == null || mChannel == null) return super.dispatchKeyEvent(event); - else if (isGone(mBinding.recycler) && isGone(mBinding.control.getRoot()) && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event); + if (mKeyDown.hasEvent(event)) mKeyDown.onKeyDown(event); return super.dispatchKeyEvent(event); } @@ -556,9 +553,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.widget.center.setVisibility(View.VISIBLE); } + @Override + public boolean dispatch(boolean check) { + boolean condition1 = mGroup != null && mChannel != null; + boolean condition2 = isGone(mBinding.recycler) && isGone(mBinding.control.getRoot()); + return check ? condition1 && condition2 : condition1; + } + @Override public void onKeyUp() { - if (mGroup == null || mChannel == null) return; int position = mGroup.getPosition() - 1; boolean limit = position < 0; if (Prefers.isAcross() & limit) prevGroup(true); @@ -568,7 +571,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onKeyDown() { - if (mGroup == null || mChannel == null) return; int position = mGroup.getPosition() + 1; boolean limit = position > mChannelAdapter.size() - 1; if (Prefers.isAcross() && limit) nextGroup(true); @@ -578,7 +580,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onKeyLeft(int time) { - if (mGroup == null || mChannel == null) return; if (isVisible(mBinding.widget.center)) App.post(mR2, 500); if (mChannel.isOnly() && mPlayers.isVod()) mPlayers.seekTo(time); else if (!mChannel.isOnly()) prevLine(); @@ -587,7 +588,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onKeyRight(int time) { - if (mGroup == null || mChannel == null) return; if (isVisible(mBinding.widget.center)) App.post(mR2, 500); if (mChannel.isOnly() && mPlayers.isVod()) mPlayers.seekTo(time); else if (!mChannel.isOnly()) nextLine(true); @@ -601,13 +601,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } @Override - public boolean onLongPress() { + public void onMenu() { if (isVisible(mBinding.control.home)) showControl(mBinding.control.home); else if (isVisible(mBinding.control.line)) showControl(mBinding.control.line); else showControl(mBinding.control.player); hideInfo(); hideUI(); - return true; } @Override @@ -618,7 +617,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onDoubleTap() { if (isVisible(mBinding.control.getRoot())) hideControl(); - else onLongPress(); + else onMenu(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java index 07ebcb952..8e720d187 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java @@ -43,22 +43,18 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { return detector.onTouchEvent(e); } - public void onKeyDown(int keyCode) { - if (text.length() >= 4) return; - text.append(getNumber(keyCode)); - listener.onShow(text.toString()); - App.post(runnable, 1000); - } - - public boolean onKeyDown(KeyEvent event) { + public void onKeyDown(KeyEvent event) { + if (!listener.dispatch(true)) return; if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isLeftKey(event)) { listener.onSeeking(subTime()); } else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isRightKey(event)) { listener.onSeeking(addTime()); } else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isUpKey(event)) { - if (Prefers.isInvert()) listener.onKeyDown(); else listener.onKeyUp(); + if (Prefers.isInvert()) listener.onKeyDown(); + else listener.onKeyUp(); } else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isDownKey(event)) { - if (Prefers.isInvert()) listener.onKeyUp(); else listener.onKeyDown(); + if (Prefers.isInvert()) listener.onKeyUp(); + else listener.onKeyDown(); } else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isLeftKey(event)) { listener.onKeyLeft(holdTime); } else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isRightKey(event)) { @@ -67,37 +63,43 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { onKeyDown(event.getKeyCode()); } else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isEnterKey(event)) { listener.onKeyCenter(); - } else if (event.isLongPress() && Utils.isEnterKey(event)) { - listener.onLongPress(); + } else if (Utils.isMenuKey(event) || event.isLongPress() && Utils.isEnterKey(event)) { + listener.onMenu(); } - return true; + } + + private void onKeyDown(int keyCode) { + if (text.length() >= 4) return; + text.append(getNumber(keyCode)); + listener.onShow(text.toString()); + App.post(runnable, 1000); } @Override public boolean onDoubleTap(@NonNull MotionEvent e) { - listener.onDoubleTap(); + if (listener.dispatch(false)) listener.onDoubleTap(); return true; } @Override public boolean onSingleTapConfirmed(@NonNull MotionEvent e) { - listener.onSingleTap(); + if (listener.dispatch(false)) listener.onSingleTap(); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) { - listener.onKeyLeft(30 * 1000); + if (listener.dispatch(true)) listener.onKeyLeft(30 * 1000); return true; } else if (e2.getX() - e1.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) { - listener.onKeyRight(30 * 1000); + if (listener.dispatch(true)) listener.onKeyRight(30 * 1000); return true; } else if (e1.getY() - e2.getY() > DISTANCE && Math.abs(velocityY) > VELOCITY) { - listener.onKeyUp(); + if (listener.dispatch(true)) listener.onKeyUp(); return true; } else if (e2.getY() - e1.getY() > DISTANCE && Math.abs(velocityY) > VELOCITY) { - listener.onKeyDown(); + if (listener.dispatch(true)) listener.onKeyDown(); return true; } else { return false; @@ -105,7 +107,7 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { } public boolean hasEvent(KeyEvent event) { - return Utils.isEnterKey(event) || Utils.isUpKey(event) || Utils.isDownKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event) || Utils.isDigitKey(event) || event.isLongPress(); + return Utils.isEnterKey(event) || Utils.isUpKey(event) || Utils.isDownKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event) || Utils.isDigitKey(event) || Utils.isMenuKey(event) || event.isLongPress(); } private int getNumber(int keyCode) { @@ -126,6 +128,8 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { public interface Listener { + boolean dispatch(boolean check); + void onShow(String number); void onFind(String number); @@ -142,7 +146,7 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { void onKeyCenter(); - boolean onLongPress(); + void onMenu(); void onSingleTap();