Remember the listener
This commit is contained in:
parent
5b2b281efb
commit
ad0cc678d8
2 changed files with 48 additions and 44 deletions
|
|
@ -131,30 +131,32 @@ private fun ExoPlayerMediaAudioView(
|
||||||
|
|
||||||
localMediaViewState.playableState = playableState
|
localMediaViewState.playableState = playableState
|
||||||
|
|
||||||
val playerListener = object : Player.Listener {
|
val playerListener = remember {
|
||||||
override fun onRenderedFirstFrame() {
|
object : Player.Listener {
|
||||||
localMediaViewState.isReady = true
|
override fun onRenderedFirstFrame() {
|
||||||
}
|
localMediaViewState.isReady = true
|
||||||
|
|
||||||
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
|
||||||
isPlaying = isPlaying,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onTimelineChanged(timeline: Timeline, reason: Int) {
|
|
||||||
if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) {
|
|
||||||
exoPlayer.duration.takeIf { it >= 0 }
|
|
||||||
?.let {
|
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
|
||||||
durationInMillis = it,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
|
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
||||||
metadata = mediaMetadata
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
|
isPlaying = isPlaying,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTimelineChanged(timeline: Timeline, reason: Int) {
|
||||||
|
if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) {
|
||||||
|
exoPlayer.duration.takeIf { it >= 0 }
|
||||||
|
?.let {
|
||||||
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
|
durationInMillis = it,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
|
||||||
|
metadata = mediaMetadata
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,31 +102,33 @@ private fun ExoPlayerMediaVideoView(
|
||||||
|
|
||||||
localMediaViewState.playableState = playableState
|
localMediaViewState.playableState = playableState
|
||||||
|
|
||||||
val playerListener = object : Player.Listener {
|
val playerListener = remember {
|
||||||
override fun onRenderedFirstFrame() {
|
object : Player.Listener {
|
||||||
localMediaViewState.isReady = true
|
override fun onRenderedFirstFrame() {
|
||||||
}
|
localMediaViewState.isReady = true
|
||||||
|
}
|
||||||
|
|
||||||
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
isPlaying = isPlaying,
|
isPlaying = isPlaying,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onVolumeChanged(volume: Float) {
|
override fun onVolumeChanged(volume: Float) {
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
isMuted = volume == 0f,
|
isMuted = volume == 0f,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onTimelineChanged(timeline: Timeline, reason: Int) {
|
override fun onTimelineChanged(timeline: Timeline, reason: Int) {
|
||||||
if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) {
|
if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) {
|
||||||
exoPlayer.duration.takeIf { it >= 0 }
|
exoPlayer.duration.takeIf { it >= 0 }
|
||||||
?.let {
|
?.let {
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
durationInMillis = it,
|
durationInMillis = it,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue