Skip to content

Commit d2e79ba

Browse files
committed
Add hold screen gesture to set playback speed in ExternalPlayerActivity
1 parent 0b0cdf2 commit d2e79ba

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

external-player/src/main/java/org/newpipe/externalplayer/ExternalPlayerActivity.kt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ class ExternalPlayerActivity : AppCompatActivity() {
1919
private val speeds = floatArrayOf(1.0f, 1.25f, 1.5f, 2.0f, 0.5f)
2020
private var speedIndex = 0
2121

22+
private lateinit var gestureDetector: GestureDetector
23+
private val holdSpeed = 2.0f // Speed to set on hold
24+
private val normalSpeed = 1.0f // Normal playback speed
25+
2226
override fun onCreate(savedInstanceState: Bundle?) {
2327
super.onCreate(savedInstanceState)
2428
binding = ActivityExternalPlayerBinding.inflate(layoutInflater)
@@ -42,14 +46,19 @@ class ExternalPlayerActivity : AppCompatActivity() {
4246
binding.subToggle.text = newText
4347
}
4448

45-
val gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
46-
override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean {
47-
return super.onScroll(e1, e2, distanceX, distanceY)
49+
gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
50+
override fun onLongPress(e: MotionEvent?) {
51+
setPlaybackSpeed(holdSpeed)
4852
}
4953
})
5054

5155
binding.playerView.setOnTouchListener { _, event ->
5256
gestureDetector.onTouchEvent(event)
57+
58+
if (event.action == MotionEvent.ACTION_UP || event.action == MotionEvent.ACTION_CANCEL) {
59+
setPlaybackSpeed(normalSpeed)
60+
}
61+
5362
false
5463
}
5564
}
@@ -101,4 +110,13 @@ class ExternalPlayerActivity : AppCompatActivity() {
101110
enterPip()
102111
}
103112
}
104-
}
113+
114+
private fun setPlaybackSpeed(speed: Float) {
115+
val intent = Intent(this, PlayerService::class.java).apply {
116+
action = PlayerService.ACTION_PLAY
117+
putExtra("speed", speed)
118+
}
119+
ContextCompat.startForegroundService(this, intent)
120+
binding.speedButton.text = "${speed}x"
121+
}
122+
}

0 commit comments

Comments
 (0)