mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-08-10 10:09:26 +00:00
Implemented hold to play video at 2x speed gesture.
This commit is contained in:
parent
19c84475db
commit
9e7b936663
2 changed files with 38 additions and 1 deletions
|
@ -92,6 +92,7 @@ class GestureControlView : LinearLayout {
|
|||
private var _surfaceView: View? = null
|
||||
private var _layoutIndicatorFill: FrameLayout;
|
||||
private var _layoutIndicatorFit: FrameLayout;
|
||||
private var _speedHolding = false
|
||||
|
||||
private val _gestureController: GestureDetectorCompat;
|
||||
|
||||
|
@ -103,6 +104,8 @@ class GestureControlView : LinearLayout {
|
|||
val onZoom = Event1<Float>();
|
||||
val onSoundAdjusted = Event1<Float>();
|
||||
val onToggleFullscreen = Event0();
|
||||
val onSpeedHoldStart = Event0()
|
||||
val onSpeedHoldEnd = Event0()
|
||||
|
||||
var fullScreenGestureEnabled = true
|
||||
|
||||
|
@ -216,7 +219,19 @@ class GestureControlView : LinearLayout {
|
|||
|
||||
return true;
|
||||
}
|
||||
override fun onLongPress(p0: MotionEvent) = Unit
|
||||
override fun onLongPress(p0: MotionEvent) {
|
||||
if (!_isControlsLocked
|
||||
&& !_skipping
|
||||
&& !_adjustingBrightness
|
||||
&& !_adjustingSound
|
||||
&& !_adjustingFullscreenUp
|
||||
&& !_adjustingFullscreenDown
|
||||
&& !_isPanning
|
||||
&& !_isZooming) {
|
||||
_speedHolding = true
|
||||
onSpeedHoldStart.emit()
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
_gestureController.setOnDoubleTapListener(object : GestureDetector.OnDoubleTapListener {
|
||||
|
@ -309,6 +324,11 @@ class GestureControlView : LinearLayout {
|
|||
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
||||
val ev = event ?: return super.onTouchEvent(event);
|
||||
|
||||
if (ev.action == MotionEvent.ACTION_UP && _speedHolding) {
|
||||
_speedHolding = false
|
||||
onSpeedHoldEnd.emit()
|
||||
}
|
||||
|
||||
cancelHideJob();
|
||||
|
||||
if (_skipping) {
|
||||
|
|
|
@ -117,6 +117,9 @@ class FutoVideoPlayer : FutoVideoPlayerBase {
|
|||
|
||||
private var _isControlsLocked: Boolean = false;
|
||||
|
||||
private var _speedHoldPrevRate = 1f
|
||||
private var _speedHoldWasPlaying = false
|
||||
|
||||
private val _time_bar_listener: TimeBar.OnScrubListener;
|
||||
|
||||
var isFitMode : Boolean = false
|
||||
|
@ -254,6 +257,20 @@ class FutoVideoPlayer : FutoVideoPlayerBase {
|
|||
gestureControl = findViewById(R.id.gesture_control);
|
||||
|
||||
gestureControl.setupTouchArea(_layoutControls, background);
|
||||
gestureControl.onSpeedHoldStart.subscribe {
|
||||
exoPlayer?.player?.let { player ->
|
||||
_speedHoldWasPlaying = player.isPlaying
|
||||
_speedHoldPrevRate = getPlaybackRate()
|
||||
setPlaybackRate(2f)
|
||||
player.play()
|
||||
}
|
||||
}
|
||||
gestureControl.onSpeedHoldEnd.subscribe {
|
||||
exoPlayer?.player?.let { player ->
|
||||
if (!_speedHoldWasPlaying) player.pause()
|
||||
setPlaybackRate(_speedHoldPrevRate)
|
||||
}
|
||||
}
|
||||
gestureControl.onSeek.subscribe { seekFromCurrent(it); };
|
||||
gestureControl.onSoundAdjusted.subscribe {
|
||||
if (Settings.instance.gestureControls.useSystemVolume) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue