mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Ability to skip silence when playing videos
This commit is contained in:
parent
2bf5b6e6f7
commit
fe6506179c
@ -88,6 +88,7 @@ object PreferenceKeys {
|
|||||||
const val DOUBLE_TAP_TO_SEEK = "double_tap_seek"
|
const val DOUBLE_TAP_TO_SEEK = "double_tap_seek"
|
||||||
const val PAUSE_ON_QUIT = "pause_on_quit"
|
const val PAUSE_ON_QUIT = "pause_on_quit"
|
||||||
const val ALTERNATIVE_PIP_CONTROLS = "alternative_pip_controls"
|
const val ALTERNATIVE_PIP_CONTROLS = "alternative_pip_controls"
|
||||||
|
const val SKIP_SILENCE = "skip_silence"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Background mode
|
* Background mode
|
||||||
|
@ -4,13 +4,15 @@ import android.os.Bundle
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.databinding.PlaybackBottomSheetBinding
|
import com.github.libretube.databinding.PlaybackBottomSheetBinding
|
||||||
import com.github.libretube.extensions.round
|
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.PlaybackParameters
|
||||||
import com.google.android.exoplayer2.Player
|
|
||||||
|
|
||||||
class PlaybackSpeedSheet(
|
class PlaybackSpeedSheet(
|
||||||
private val player: Player
|
private val player: ExoPlayer
|
||||||
) : ExpandedBottomSheet() {
|
) : ExpandedBottomSheet() {
|
||||||
private lateinit var binding: PlaybackBottomSheetBinding
|
private lateinit var binding: PlaybackBottomSheetBinding
|
||||||
|
|
||||||
@ -28,6 +30,9 @@ class PlaybackSpeedSheet(
|
|||||||
|
|
||||||
binding.speed.value = player.playbackParameters.speed
|
binding.speed.value = player.playbackParameters.speed
|
||||||
binding.pitch.value = player.playbackParameters.pitch
|
binding.pitch.value = player.playbackParameters.pitch
|
||||||
|
PreferenceHelper.getBoolean(PreferenceKeys.SKIP_SILENCE, false).let {
|
||||||
|
binding.skipSilence.isChecked = it
|
||||||
|
}
|
||||||
|
|
||||||
binding.speed.addOnChangeListener { _, _, _ ->
|
binding.speed.addOnChangeListener { _, _, _ ->
|
||||||
onChange()
|
onChange()
|
||||||
@ -46,6 +51,11 @@ class PlaybackSpeedSheet(
|
|||||||
binding.pitch.value = 1f
|
binding.pitch.value = 1f
|
||||||
onChange()
|
onChange()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.skipSilence.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
player.skipSilenceEnabled = isChecked
|
||||||
|
PreferenceHelper.putBoolean(PreferenceKeys.SKIP_SILENCE, isChecked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onChange() {
|
private fun onChange() {
|
||||||
|
@ -15,6 +15,7 @@ import android.widget.ImageView
|
|||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.databinding.DoubleTapOverlayBinding
|
import com.github.libretube.databinding.DoubleTapOverlayBinding
|
||||||
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
||||||
import com.github.libretube.databinding.PlayerGestureControlsViewBinding
|
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.PlayerGestureController
|
||||||
import com.github.libretube.util.PlayerHelper
|
import com.github.libretube.util.PlayerHelper
|
||||||
import com.github.libretube.util.PlayingQueue
|
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.PlaybackParameters
|
||||||
import com.google.android.exoplayer2.Player
|
import com.google.android.exoplayer2.Player
|
||||||
import com.google.android.exoplayer2.trackselection.TrackSelector
|
import com.google.android.exoplayer2.trackselection.TrackSelector
|
||||||
@ -111,6 +114,9 @@ internal class CustomExoPlayerView(
|
|||||||
PlayerHelper.playbackSpeed.toFloat(),
|
PlayerHelper.playbackSpeed.toFloat(),
|
||||||
1.0f
|
1.0f
|
||||||
)
|
)
|
||||||
|
PreferenceHelper.getBoolean(PreferenceKeys.SKIP_SILENCE, false).let {
|
||||||
|
(player as ExoPlayer).skipSilenceEnabled = true
|
||||||
|
}
|
||||||
playbackPrefSet = true
|
playbackPrefSet = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,7 +490,9 @@ internal class CustomExoPlayerView(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onPlaybackSpeedClicked() {
|
override fun onPlaybackSpeedClicked() {
|
||||||
player?.let { PlaybackSpeedSheet(it).show(supportFragmentManager) }
|
player?.let {
|
||||||
|
PlaybackSpeedSheet(it as ExoPlayer).show(supportFragmentManager)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResizeModeClicked() {
|
override fun onResizeModeClicked() {
|
||||||
|
@ -92,6 +92,29 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</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>
|
</LinearLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
@ -441,6 +441,7 @@
|
|||||||
<string name="audio_only_mode">Audio only mode</string>
|
<string name="audio_only_mode">Audio only mode</string>
|
||||||
<string name="audio_only_mode_summary">Turn LibreTube into a music player.</string>
|
<string name="audio_only_mode_summary">Turn LibreTube into a music player.</string>
|
||||||
<string name="sleep_timer">Sleep timer</string>
|
<string name="sleep_timer">Sleep timer</string>
|
||||||
|
<string name="skip_silence">Skip silence</string>
|
||||||
|
|
||||||
<!-- Notification channel strings -->
|
<!-- Notification channel strings -->
|
||||||
<string name="download_channel_name">Download Service</string>
|
<string name="download_channel_name">Download Service</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user