diff --git a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
index f460c9f94..486a858d7 100644
--- a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
+++ b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
@@ -88,6 +88,7 @@ object PreferenceKeys {
const val DOUBLE_TAP_TO_SEEK = "double_tap_seek"
const val PAUSE_ON_QUIT = "pause_on_quit"
const val ALTERNATIVE_PIP_CONTROLS = "alternative_pip_controls"
+ const val SKIP_SILENCE = "skip_silence"
/**
* Background mode
diff --git a/app/src/main/java/com/github/libretube/ui/sheets/PlaybackSpeedSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/PlaybackSpeedSheet.kt
index dc0d670b3..4bf141c9e 100644
--- a/app/src/main/java/com/github/libretube/ui/sheets/PlaybackSpeedSheet.kt
+++ b/app/src/main/java/com/github/libretube/ui/sheets/PlaybackSpeedSheet.kt
@@ -4,13 +4,15 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.databinding.PlaybackBottomSheetBinding
import com.github.libretube.extensions.round
+import com.github.libretube.util.PreferenceHelper
+import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.PlaybackParameters
-import com.google.android.exoplayer2.Player
class PlaybackSpeedSheet(
- private val player: Player
+ private val player: ExoPlayer
) : ExpandedBottomSheet() {
private lateinit var binding: PlaybackBottomSheetBinding
@@ -28,6 +30,9 @@ class PlaybackSpeedSheet(
binding.speed.value = player.playbackParameters.speed
binding.pitch.value = player.playbackParameters.pitch
+ PreferenceHelper.getBoolean(PreferenceKeys.SKIP_SILENCE, false).let {
+ binding.skipSilence.isChecked = it
+ }
binding.speed.addOnChangeListener { _, _, _ ->
onChange()
@@ -46,6 +51,11 @@ class PlaybackSpeedSheet(
binding.pitch.value = 1f
onChange()
}
+
+ binding.skipSilence.setOnCheckedChangeListener { _, isChecked ->
+ player.skipSilenceEnabled = isChecked
+ PreferenceHelper.putBoolean(PreferenceKeys.SKIP_SILENCE, isChecked)
+ }
}
private fun onChange() {
diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt
index 05f9a1bd8..0ab60b343 100644
--- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt
+++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt
@@ -15,6 +15,7 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.github.libretube.R
+import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.databinding.DoubleTapOverlayBinding
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
import com.github.libretube.databinding.PlayerGestureControlsViewBinding
@@ -33,6 +34,8 @@ import com.github.libretube.util.BrightnessHelper
import com.github.libretube.util.PlayerGestureController
import com.github.libretube.util.PlayerHelper
import com.github.libretube.util.PlayingQueue
+import com.github.libretube.util.PreferenceHelper
+import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.PlaybackParameters
import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.trackselection.TrackSelector
@@ -111,6 +114,9 @@ internal class CustomExoPlayerView(
PlayerHelper.playbackSpeed.toFloat(),
1.0f
)
+ PreferenceHelper.getBoolean(PreferenceKeys.SKIP_SILENCE, false).let {
+ (player as ExoPlayer).skipSilenceEnabled = true
+ }
playbackPrefSet = true
}
@@ -484,7 +490,9 @@ internal class CustomExoPlayerView(
}
override fun onPlaybackSpeedClicked() {
- player?.let { PlaybackSpeedSheet(it).show(supportFragmentManager) }
+ player?.let {
+ PlaybackSpeedSheet(it as ExoPlayer).show(supportFragmentManager)
+ }
}
override fun onResizeModeClicked() {
diff --git a/app/src/main/res/layout/playback_bottom_sheet.xml b/app/src/main/res/layout/playback_bottom_sheet.xml
index ab34782c3..b99366ce8 100644
--- a/app/src/main/res/layout/playback_bottom_sheet.xml
+++ b/app/src/main/res/layout/playback_bottom_sheet.xml
@@ -92,6 +92,29 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2146b817b..f97725a59 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -441,6 +441,7 @@
Audio only mode
Turn LibreTube into a music player.
Sleep timer
+ Skip silence
Download Service