Merge pull request #2262 from Kruna1Pate1/fix/offline-player

Fix offline player play/pause button
This commit is contained in:
Bnyro 2022-12-06 11:02:40 +01:00 committed by GitHub
commit ab175e473a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 6 deletions

View File

@ -317,7 +317,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
BackgroundHelper.stopBackgroundPlay(requireContext()) BackgroundHelper.stopBackgroundPlay(requireContext())
} }
val playPauseClickListner = View.OnClickListener { binding.playImageView.setOnClickListener {
if (!exoPlayer.isPlaying) { if (!exoPlayer.isPlaying) {
// start or go on playing // start or go on playing
if (exoPlayer.playbackState == Player.STATE_ENDED) { if (exoPlayer.playbackState == Player.STATE_ENDED) {
@ -330,8 +330,6 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
exoPlayer.pause() exoPlayer.pause()
} }
} }
playerBinding.playPauseBTN.setOnClickListener(playPauseClickListner)
binding.playImageView.setOnClickListener(playPauseClickListner)
// video description and chapters toggle // video description and chapters toggle
binding.playerTitleLayout.setOnClickListener { binding.playerTitleLayout.setOnClickListener {
@ -976,15 +974,12 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
if (exoPlayer.isPlaying) { if (exoPlayer.isPlaying) {
// video is playing // video is playing
binding.playImageView.setImageResource(R.drawable.ic_pause) binding.playImageView.setImageResource(R.drawable.ic_pause)
playerBinding.playPauseBTN.setImageResource(R.drawable.ic_pause)
} else if (exoPlayer.playbackState == Player.STATE_ENDED) { } else if (exoPlayer.playbackState == Player.STATE_ENDED) {
// video has finished // video has finished
binding.playImageView.setImageResource(R.drawable.ic_restart) binding.playImageView.setImageResource(R.drawable.ic_restart)
playerBinding.playPauseBTN.setImageResource(R.drawable.ic_restart)
} else { } else {
// player in any other state // player in any other state
binding.playImageView.setImageResource(R.drawable.ic_play) binding.playImageView.setImageResource(R.drawable.ic_play)
playerBinding.playPauseBTN.setImageResource(R.drawable.ic_play)
} }
} }

View File

@ -125,6 +125,47 @@ internal class CustomExoPlayerView(
"zoom" -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM "zoom" -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
} }
binding.playPauseBTN.setOnClickListener {
if (player?.isPlaying == false) {
// start or go on playing
if (player?.playbackState == Player.STATE_ENDED) {
// restart video if finished
player?.seekTo(0)
}
player?.play()
} else {
// pause the video
player?.pause()
}
}
player?.addListener(object : Player.Listener {
override fun onEvents(player: Player, events: Player.Events) {
super.onEvents(player, events)
if (events.containsAny(
Player.EVENT_PLAYBACK_STATE_CHANGED,
Player.EVENT_IS_PLAYING_CHANGED,
Player.EVENT_PLAY_WHEN_READY_CHANGED
)
) {
updatePlayPauseButton()
}
}
})
}
private fun updatePlayPauseButton() {
if (player?.isPlaying == true) {
// video is playing
binding.playPauseBTN.setImageResource(R.drawable.ic_pause)
} else if (player?.playbackState == Player.STATE_ENDED) {
// video has finished
binding.playPauseBTN.setImageResource(R.drawable.ic_restart)
} else {
// player in any other state
binding.playPauseBTN.setImageResource(R.drawable.ic_play)
}
} }
override fun hideController() { override fun hideController() {