mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-18 19:19:33 +01:00
Merge pull request #5053 from nextcloud/issue-5051-seekbar-illegal-state-exception
Better null and error handling when playing voice messages
This commit is contained in:
commit
6aab2e27cd
@ -183,19 +183,26 @@ class MediaPlayerManager : LifecycleAwareManager {
|
||||
continue
|
||||
}
|
||||
|
||||
if (mediaPlayer != null && mediaPlayer?.isPlaying == true) {
|
||||
val pos = mediaPlayer!!.currentPosition
|
||||
mediaPlayer?.let { player ->
|
||||
try {
|
||||
if (!player.isPlaying) return@let
|
||||
} catch (e: IllegalStateException) {
|
||||
Log.e(TAG, "Seekbar updated during an improper state: $e")
|
||||
return@let
|
||||
}
|
||||
|
||||
val pos = player.currentPosition
|
||||
mediaPlayerPosition = pos
|
||||
val progress = (pos.toFloat() / mediaPlayerDuration) * DIVIDER
|
||||
val progressI = ceil(progress).toInt()
|
||||
val seconds = (pos / ONE_SEC)
|
||||
_mediaPlayerSeekBarPosition.emit(progressI)
|
||||
currentCycledMessage?.let {
|
||||
it.isPlayingVoiceMessage = true
|
||||
it.voiceMessageSeekbarProgress = progressI
|
||||
it.voiceMessagePlayedSeconds = seconds
|
||||
if (progressI >= IS_PLAYED_CUTOFF) it.wasPlayedVoiceMessage = true
|
||||
_mediaPlayerSeekBarPositionMsg.emit(it)
|
||||
currentCycledMessage?.let { msg ->
|
||||
msg.isPlayingVoiceMessage = true
|
||||
msg.voiceMessageSeekbarProgress = progressI
|
||||
msg.voiceMessagePlayedSeconds = seconds
|
||||
if (progressI >= IS_PLAYED_CUTOFF) msg.wasPlayedVoiceMessage = true
|
||||
_mediaPlayerSeekBarPositionMsg.emit(msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user