pull/594/head
jhengazuki 8 months ago
parent e82a0fe88c
commit 11477ea5d2
  1. 9
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 113
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownCast.java

@ -36,7 +36,7 @@ import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.exo.ExoUtil;
import com.fongmi.android.tv.service.PlaybackService;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomKeyDownCast;
import com.fongmi.android.tv.ui.custom.CustomKeyDownVod;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.utils.Clock;
@ -50,11 +50,11 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.UUID;
public class CastActivity extends BaseActivity implements CustomKeyDownCast.Listener, TrackDialog.Listener, RenderControl, ServiceConnection, Clock.Callback {
public class CastActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, RenderControl, ServiceConnection, Clock.Callback {
private ActivityCastBinding mBinding;
private DLNARendererService mService;
private CustomKeyDownCast mKeyDown;
private CustomKeyDownVod mKeyDown;
private RenderState mState;
private CastAction mAction;
private Players mPlayers;
@ -87,10 +87,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
protected void initView() {
bindService(new Intent(this, DLNARendererService.class), this, Context.BIND_AUTO_CREATE);
mClock = Clock.create(mBinding.widget.clock);
mKeyDown = CustomKeyDownCast.create(this);
mKeyDown = CustomKeyDownVod.create(this);
mPlayers = Players.create(this);
mR1 = this::hideControl;
mR2 = this::setTraffic;
mKeyDown.setFull(true);
setVideoView();
}

@ -1,113 +0,0 @@
package com.fongmi.android.tv.ui.custom;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.utils.KeyUtil;
public class CustomKeyDownCast extends GestureDetector.SimpleOnGestureListener {
private final GestureDetector detector;
private final Listener listener;
private boolean changeSpeed;
private long holdTime;
public static CustomKeyDownCast create(Activity activity) {
return new CustomKeyDownCast(activity);
}
private CustomKeyDownCast(Activity activity) {
this.detector = new GestureDetector(activity, this);
this.listener = (Listener) activity;
}
public boolean onTouchEvent(MotionEvent e) {
return detector.onTouchEvent(e);
}
public boolean hasEvent(KeyEvent event) {
return KeyUtil.isEnterKey(event) || KeyUtil.isUpKey(event) || KeyUtil.isDownKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event);
}
public boolean onKeyDown(KeyEvent event) {
check(event);
return true;
}
private void check(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isLeftKey(event)) {
listener.onSeeking(subTime());
} else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isRightKey(event)) {
listener.onSeeking(addTime());
} else if (event.getAction() == KeyEvent.ACTION_UP && (KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event))) {
App.post(() -> listener.onSeekTo(holdTime), 250);
} else if (event.getAction() == KeyEvent.ACTION_UP && KeyUtil.isUpKey(event)) {
if (changeSpeed) listener.onSpeedEnd();
else listener.onKeyUp();
changeSpeed = false;
} else if (event.getAction() == KeyEvent.ACTION_UP && KeyUtil.isDownKey(event)) {
listener.onKeyDown();
} else if (event.getAction() == KeyEvent.ACTION_UP && KeyUtil.isEnterKey(event)) {
listener.onKeyCenter();
} else if (event.isLongPress() && KeyUtil.isUpKey(event)) {
listener.onSpeedUp();
changeSpeed = true;
}
}
@Override
public boolean onDown(@NonNull MotionEvent e) {
return true;
}
@Override
public boolean onDoubleTap(@NonNull MotionEvent e) {
listener.onDoubleTap();
return true;
}
@Override
public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
listener.onSingleTap();
return true;
}
private long addTime() {
return holdTime = holdTime + Constant.INTERVAL_SEEK;
}
private long subTime() {
return holdTime = holdTime - Constant.INTERVAL_SEEK;
}
public void resetTime() {
holdTime = 0;
}
public interface Listener {
void onSeeking(long time);
void onSeekTo(long time);
void onSpeedUp();
void onSpeedEnd();
void onKeyUp();
void onKeyDown();
void onKeyCenter();
void onSingleTap();
void onDoubleTap();
}
}
Loading…
Cancel
Save