Merge pull request #2737 from Bnyro/master

Ability to skip silence when playing videos
This commit is contained in:
Bnyro 2023-01-17 18:39:41 +01:00 committed by GitHub
commit 958e89059f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 46 additions and 3 deletions

View File

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

View File

@ -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() {

View File

@ -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() {

View File

@ -92,6 +92,29 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:paddingHorizontal="20dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="@string/skip_silence"
android:textSize="18sp" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/skip_silence"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
</LinearLayout>
</FrameLayout>

View File

@ -441,6 +441,7 @@
<string name="audio_only_mode">Audio only mode</string>
<string name="audio_only_mode_summary">Turn LibreTube into a music player.</string>
<string name="sleep_timer">Sleep timer</string>
<string name="skip_silence">Skip silence</string>
<!-- Notification channel strings -->
<string name="download_channel_name">Download Service</string>