more cleanup + more features for the offline player

This commit is contained in:
Bnyro 2022-10-07 19:39:41 +02:00
parent ef4e48e347
commit e718937dd6
4 changed files with 38 additions and 56 deletions

View File

@ -5,7 +5,6 @@ import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.media.session.PlaybackState
import android.os.Build import android.os.Build
import android.os.Handler import android.os.Handler
import android.os.IBinder import android.os.IBinder
@ -18,8 +17,6 @@ import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
import com.github.libretube.constants.IntentData import com.github.libretube.constants.IntentData
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.db.DatabaseHelper
import com.github.libretube.extensions.query
import com.github.libretube.extensions.toID import com.github.libretube.extensions.toID
import com.github.libretube.util.AutoPlayHelper import com.github.libretube.util.AutoPlayHelper
import com.github.libretube.util.NowPlayingNotification import com.github.libretube.util.NowPlayingNotification
@ -89,8 +86,6 @@ class BackgroundMode : Service() {
/** /**
* Autoplay Preference * Autoplay Preference
*/ */
private val autoplay = PreferenceHelper.getBoolean(PreferenceKeys.AUTO_PLAY, true)
private val handler = Handler(Looper.getMainLooper()) private val handler = Handler(Looper.getMainLooper())
/** /**
@ -191,7 +186,7 @@ class BackgroundMode : Service() {
fetchSponsorBlockSegments() fetchSponsorBlockSegments()
if (autoplay) setNextStream() if (PlayerHelper.autoPlayEnabled) setNextStream()
} }
/** /**
@ -217,21 +212,13 @@ class BackgroundMode : Service() {
override fun onPlaybackStateChanged(state: Int) { override fun onPlaybackStateChanged(state: Int) {
when (state) { when (state) {
Player.STATE_ENDED -> { Player.STATE_ENDED -> {
if (autoplay) playNextVideo() if (PlayerHelper.autoPlayEnabled) playNextVideo()
} }
Player.STATE_IDLE -> { Player.STATE_IDLE -> {
onDestroy() onDestroy()
} }
Player.STATE_BUFFERING -> {} Player.STATE_BUFFERING -> {}
Player.STATE_READY -> {} Player.STATE_READY -> {}
PlaybackState.STATE_PAUSED -> {
query {
DatabaseHelper.saveWatchPosition(
videoId,
player?.currentPosition ?: 0L
)
}
}
} }
} }
@ -332,11 +319,7 @@ class BackgroundMode : Service() {
val segmentEnd = (segment.segment[1] * 1000f).toLong() val segmentEnd = (segment.segment[1] * 1000f).toLong()
val currentPosition = player?.currentPosition val currentPosition = player?.currentPosition
if (currentPosition in segmentStart until segmentEnd) { if (currentPosition in segmentStart until segmentEnd) {
if (PreferenceHelper.getBoolean( if (PlayerHelper.sponsorBlockNotifications) {
"sb_notifications_key",
true
)
) {
try { try {
Toast.makeText(this, R.string.segment_skipped, Toast.LENGTH_SHORT) Toast.makeText(this, R.string.segment_skipped, Toast.LENGTH_SHORT)
.show() .show()

View File

@ -13,13 +13,11 @@ import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import com.github.libretube.constants.IntentData import com.github.libretube.constants.IntentData
import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.databinding.ActivityOfflinePlayerBinding import com.github.libretube.databinding.ActivityOfflinePlayerBinding
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.base.BaseActivity
import com.github.libretube.util.DownloadHelper import com.github.libretube.util.DownloadHelper
import com.github.libretube.util.PlayerHelper import com.github.libretube.util.PlayerHelper
import com.github.libretube.util.PreferenceHelper
import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.source.MergingMediaSource import com.google.android.exoplayer2.source.MergingMediaSource
@ -165,13 +163,7 @@ class OfflinePlayerActivity : BaseActivity() {
override fun onUserLeaveHint() { override fun onUserLeaveHint() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return
if (!PreferenceHelper.getBoolean( if (!PlayerHelper.pipEnabled) return
PreferenceKeys.PICTURE_IN_PICTURE,
true
)
) {
return
}
if (player.playbackState == PlaybackState.STATE_PAUSED) return if (player.playbackState == PlaybackState.STATE_PAUSED) return

View File

@ -10,7 +10,6 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
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.models.interfaces.DoubleTapInterface import com.github.libretube.models.interfaces.DoubleTapInterface
@ -19,13 +18,12 @@ import com.github.libretube.obj.BottomSheetItem
import com.github.libretube.ui.activities.MainActivity import com.github.libretube.ui.activities.MainActivity
import com.github.libretube.ui.sheets.PlaybackSpeedSheet import com.github.libretube.ui.sheets.PlaybackSpeedSheet
import com.github.libretube.util.DoubleTapListener import com.github.libretube.util.DoubleTapListener
import com.github.libretube.util.PreferenceHelper import com.github.libretube.util.PlayerHelper
import com.google.android.exoplayer2.PlaybackParameters import com.google.android.exoplayer2.PlaybackParameters
import com.google.android.exoplayer2.trackselection.TrackSelector import com.google.android.exoplayer2.trackselection.TrackSelector
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
import com.google.android.exoplayer2.ui.StyledPlayerView import com.google.android.exoplayer2.ui.StyledPlayerView
import com.google.android.exoplayer2.util.RepeatModeUtil import com.google.android.exoplayer2.util.RepeatModeUtil
import kotlin.math.roundToInt
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
internal class CustomExoPlayerView( internal class CustomExoPlayerView(
@ -53,27 +51,9 @@ internal class CustomExoPlayerView(
/** /**
* Preferences * Preferences
*/ */
var autoplayEnabled = PreferenceHelper.getBoolean( var autoplayEnabled = PlayerHelper.autoPlayEnabled
PreferenceKeys.AUTO_PLAY,
true
)
private val playbackSpeed = PreferenceHelper.getString( private var resizeModePref = PlayerHelper.resizeModePref
PreferenceKeys.PLAYBACK_SPEED,
"1"
).replace("F", "")
private val seekIncrement = PreferenceHelper.getString(
PreferenceKeys.SEEK_INCREMENT,
"10.0"
).toFloat()
.roundToInt()
.toLong() * 1000
private var resizeModePref = PreferenceHelper.getString(
PreferenceKeys.PLAYER_RESIZE_MODE,
"fit"
)
private fun toggleController() { private fun toggleController() {
if (isControllerFullyVisible) hideController() else showController() if (isControllerFullyVisible) hideController() else showController()
@ -108,7 +88,7 @@ internal class CustomExoPlayerView(
initializeAdvancedOptions(context) initializeAdvancedOptions(context)
player?.playbackParameters = PlaybackParameters( player?.playbackParameters = PlaybackParameters(
playbackSpeed.toFloat(), PlayerHelper.playbackSpeed.toFloat(),
1.0f 1.0f
) )
@ -250,7 +230,7 @@ internal class CustomExoPlayerView(
private fun enableDoubleTapToSeek() { private fun enableDoubleTapToSeek() {
// set seek increment text // set seek increment text
val seekIncrementText = (seekIncrement / 1000).toString() val seekIncrementText = (PlayerHelper.seekIncrement / 1000).toString()
doubleTapOverlayBinding?.rewindTV?.text = seekIncrementText doubleTapOverlayBinding?.rewindTV?.text = seekIncrementText
doubleTapOverlayBinding?.forwardTV?.text = seekIncrementText doubleTapOverlayBinding?.forwardTV?.text = seekIncrementText
doubleTapListener = doubleTapListener =
@ -265,7 +245,7 @@ internal class CustomExoPlayerView(
} }
private fun rewind() { private fun rewind() {
player?.seekTo((player?.currentPosition ?: 0L) - seekIncrement) player?.seekTo((player?.currentPosition ?: 0L) - PlayerHelper.seekIncrement)
// show the rewind button // show the rewind button
doubleTapOverlayBinding?.rewindBTN.apply { doubleTapOverlayBinding?.rewindBTN.apply {
@ -289,7 +269,7 @@ internal class CustomExoPlayerView(
} }
private fun forward() { private fun forward() {
player?.seekTo(player!!.currentPosition + seekIncrement) player?.seekTo(player!!.currentPosition + PlayerHelper.seekIncrement)
// show the forward button // show the forward button
doubleTapOverlayBinding?.forwardBTN.apply { doubleTapOverlayBinding?.forwardBTN.apply {

View File

@ -6,6 +6,7 @@ import android.view.accessibility.CaptioningManager
import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.PreferenceKeys
import com.google.android.exoplayer2.ui.CaptionStyleCompat import com.google.android.exoplayer2.ui.CaptionStyleCompat
import com.google.android.exoplayer2.video.VideoSize import com.google.android.exoplayer2.video.VideoSize
import kotlin.math.roundToInt
object PlayerHelper { object PlayerHelper {
// get the audio source following the users preferences // get the audio source following the users preferences
@ -259,6 +260,32 @@ object PlayerHelper {
"64" "64"
) )
val autoPlayEnabled: Boolean
get() = PreferenceHelper.getBoolean(
PreferenceKeys.AUTO_PLAY,
true
)
val seekIncrement: Long
get() = PreferenceHelper.getString(
PreferenceKeys.SEEK_INCREMENT,
"10.0"
).toFloat()
.roundToInt()
.toLong() * 1000
val playbackSpeed: String
get() = PreferenceHelper.getString(
PreferenceKeys.PLAYBACK_SPEED,
"1"
).replace("F", "")
val resizeModePref: String
get() = PreferenceHelper.getString(
PreferenceKeys.PLAYER_RESIZE_MODE,
"fit"
)
fun getDefaultResolution(context: Context): String { fun getDefaultResolution(context: Context): String {
return if (NetworkHelper.isNetworkMobile(context)) { return if (NetworkHelper.isNetworkMobile(context)) {
PreferenceHelper.getString( PreferenceHelper.getString(