Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into fast_forward_on_long_…
Browse files Browse the repository at this point in the history
…press
  • Loading branch information
Yashraj254 committed Aug 4, 2023
2 parents 960080a + e134ab9 commit 193c9d4
Showing 1 changed file with 57 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import androidx.media3.session.MediaSession
import androidx.media3.ui.AspectRatioFrameLayout
import androidx.media3.ui.CaptionStyleCompat
import androidx.media3.ui.PlayerView
import androidx.media3.ui.TimeBar
import com.github.anilbeesetti.nextlib.ffcodecs.NextRenderersFactory
import com.google.android.material.color.DynamicColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder
Expand All @@ -59,6 +60,9 @@ import dev.anilbeesetti.nextplayer.feature.player.dialogs.getCurrentTrackIndex
import dev.anilbeesetti.nextplayer.feature.player.extensions.getLocalSubtitles
import dev.anilbeesetti.nextplayer.feature.player.extensions.getSubtitleMime
import dev.anilbeesetti.nextplayer.feature.player.extensions.isRendererAvailable
import dev.anilbeesetti.nextplayer.feature.player.extensions.seekBack
import dev.anilbeesetti.nextplayer.feature.player.extensions.seekForward
import dev.anilbeesetti.nextplayer.feature.player.extensions.shouldFastSeek
import dev.anilbeesetti.nextplayer.feature.player.extensions.switchTrack
import dev.anilbeesetti.nextplayer.feature.player.extensions.toActivityOrientation
import dev.anilbeesetti.nextplayer.feature.player.extensions.toSubtitle
Expand Down Expand Up @@ -95,9 +99,15 @@ class PlayerActivity : AppCompatActivity() {
private var shouldFetchPlaylist = true
private var isSubtitleLauncherHasUri = false
private var isFirstFrameRendered = false
private var isFrameRendered = false
private var previousScrubPosition = 0L
private var isPlayingOnScrubStart: Boolean = false
private var currentOrientation: Int? = null
private var currentVideoOrientation: Int? = null

private val shouldFastSeek: Boolean
get() = playerPreferences.shouldFastSeek(player.duration)

/**
* Player
*/
Expand Down Expand Up @@ -131,6 +141,7 @@ class PlayerActivity : AppCompatActivity() {
private lateinit var playerControls: FrameLayout
private lateinit var prevButton: ImageButton
private lateinit var screenRotationButton: ImageButton
private lateinit var seekBar: TimeBar
private lateinit var subtitleTrackButton: ImageButton
private lateinit var unlockControlsButton: ImageButton
private lateinit var videoTitleTextView: TextView
Expand Down Expand Up @@ -163,16 +174,6 @@ class PlayerActivity : AppCompatActivity() {
binding = ActivityPlayerBinding.inflate(layoutInflater)
setContentView(binding.root)

playerGestureHelper = PlayerGestureHelper(
viewModel = viewModel,
activity = this,
playerView = binding.playerView,
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
)

playlistManager = PlaylistManager()
playerApi = PlayerApi(this)

// Initializing views
audioTrackButton = binding.playerView.findViewById(R.id.btn_audio_track)
backButton = binding.playerView.findViewById(R.id.back_button)
Expand All @@ -182,10 +183,43 @@ class PlayerActivity : AppCompatActivity() {
playerControls = binding.playerView.findViewById(R.id.player_controls)
prevButton = binding.playerView.findViewById(R.id.btn_play_prev)
screenRotationButton = binding.playerView.findViewById(R.id.btn_screen_rotation)
seekBar = binding.playerView.findViewById(R.id.exo_progress)
subtitleTrackButton = binding.playerView.findViewById(R.id.btn_subtitle_track)
unlockControlsButton = binding.playerView.findViewById(R.id.btn_unlock_controls)
videoTitleTextView = binding.playerView.findViewById(R.id.video_name)
videoZoomButton = binding.playerView.findViewById(R.id.btn_video_zoom)

playerGestureHelper = PlayerGestureHelper(
viewModel = viewModel,
activity = this,
playerView = binding.playerView,
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
)

seekBar.addListener(object : TimeBar.OnScrubListener {
override fun onScrubStart(timeBar: TimeBar, position: Long) {
if (player.isPlaying) {
isPlayingOnScrubStart = true
player.pause()
}
isFrameRendered = true
previousScrubPosition = player.currentPosition
scrub(position)
}

override fun onScrubMove(timeBar: TimeBar, position: Long) {
scrub(position)
}

override fun onScrubStop(timeBar: TimeBar, position: Long, canceled: Boolean) {
if (isPlayingOnScrubStart) {
player.play()
}
}
})

playlistManager = PlaylistManager()
playerApi = PlayerApi(this)
}

override fun onStart() {
Expand Down Expand Up @@ -479,6 +513,7 @@ class PlayerActivity : AppCompatActivity() {
Player.STATE_READY -> {
Timber.d("Player state: READY")
Timber.d(playlistManager.toString())
isFrameRendered = true
isFileLoaded = true
}

Expand Down Expand Up @@ -551,6 +586,18 @@ class PlayerActivity : AppCompatActivity() {
.build()
}

private fun scrub(position: Long) {
if (isFrameRendered) {
isFrameRendered = false
if (position > previousScrubPosition) {
player.seekForward(position, shouldFastSeek)
} else {
player.seekBack(position, shouldFastSeek)
}
previousScrubPosition = position
}
}

private fun savePlayerState(uri: Uri) {
if (isFirstFrameRendered) {
viewModel.saveState(
Expand Down

0 comments on commit 193c9d4

Please sign in to comment.