@@ -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