mediaPlayer 를 사용하는 곳은 항상 초기화 되어 있는지 확인 하고 로직이 실행되도록 수정

This commit is contained in:
klaus 2023-08-18 21:06:53 +09:00
parent a4cdbebeb4
commit f7299cc0df
1 changed files with 64 additions and 59 deletions

View File

@ -146,7 +146,7 @@ class AudioContentPlayService :
} }
MusicAction.PLAY.name -> { MusicAction.PLAY.name -> {
if (!isPlaying) { if (!isPlaying && this::mediaPlayer.isInitialized) {
mediaPlayer.start() mediaPlayer.start()
toggleIsPlaying() toggleIsPlaying()
updateNotification() updateNotification()
@ -154,7 +154,7 @@ class AudioContentPlayService :
} }
MusicAction.PAUSE.name -> { MusicAction.PAUSE.name -> {
if (isPlaying) { if (isPlaying && this::mediaPlayer.isInitialized) {
mediaPlayer.pause() mediaPlayer.pause()
toggleIsPlaying() toggleIsPlaying()
updateNotification() updateNotification()
@ -186,11 +186,14 @@ class AudioContentPlayService :
MusicAction.PROGRESS.name -> { MusicAction.PROGRESS.name -> {
val progress = intent.getIntExtra(Constants.EXTRA_AUDIO_CONTENT_PROGRESS, 0) val progress = intent.getIntExtra(Constants.EXTRA_AUDIO_CONTENT_PROGRESS, 0)
if (progress > 0) { if (progress > 0 && this::mediaPlayer.isInitialized) {
if (contentId != null) saveNewPlaybackTracking( if (contentId != null) {
totalDuration = mediaPlayer.duration, saveNewPlaybackTracking(
progress = progress totalDuration = mediaPlayer.duration,
) progress = progress
)
}
mediaPlayer.seekTo(progress) mediaPlayer.seekTo(progress)
} }
} }
@ -258,7 +261,7 @@ class AudioContentPlayService :
} }
) )
if (isPlaying) { if (isPlaying && this::mediaPlayer.isInitialized) {
mediaPlayer.stop() mediaPlayer.stop()
setEndPositionPlaybackTracking(mediaPlayer.currentPosition) setEndPositionPlaybackTracking(mediaPlayer.currentPosition)
@ -290,12 +293,12 @@ class AudioContentPlayService :
return null return null
} }
override fun onCompletion(mp: MediaPlayer?) { override fun onCompletion(mp: MediaPlayer) {
setEndPositionPlaybackTracking(mediaPlayer.currentPosition) setEndPositionPlaybackTracking(mp.currentPosition)
if (SharedPreferenceManager.isContentPlayLoop) { if (SharedPreferenceManager.isContentPlayLoop) {
saveNewPlaybackTracking(totalDuration = mediaPlayer.duration, progress = 0) saveNewPlaybackTracking(totalDuration = mp.duration, progress = 0)
mediaPlayer.start() mp.start()
} else { } else {
toggleIsPlaying(false) toggleIsPlaying(false)
mediaPlayer.release() mediaPlayer.release()
@ -370,61 +373,63 @@ class AudioContentPlayService :
} }
override fun onPrepared(mp: MediaPlayer?) { override fun onPrepared(mp: MediaPlayer?) {
saveNewPlaybackTracking(totalDuration = mediaPlayer.duration, progress = 0) if (this::mediaPlayer.isInitialized) {
sendBroadcast( saveNewPlaybackTracking(totalDuration = mediaPlayer.duration, progress = 0)
Intent(Constants.ACTION_AUDIO_CONTENT_RECEIVER) sendBroadcast(
.apply { Intent(Constants.ACTION_AUDIO_CONTENT_RECEIVER)
putExtra( .apply {
Constants.EXTRA_AUDIO_CONTENT_NEXT_ACTION, putExtra(
MusicAction.PLAY Constants.EXTRA_AUDIO_CONTENT_NEXT_ACTION,
) MusicAction.PLAY
)
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_DURATION, Constants.EXTRA_AUDIO_CONTENT_DURATION,
mediaPlayer.duration mediaPlayer.duration
) )
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_ID, Constants.EXTRA_AUDIO_CONTENT_ID,
contentId contentId
) )
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_ALERT_PREVIEW, Constants.EXTRA_AUDIO_CONTENT_ALERT_PREVIEW,
true true
) )
} }
) )
sendBroadcast( sendBroadcast(
Intent(Constants.ACTION_MAIN_AUDIO_CONTENT_RECEIVER) Intent(Constants.ACTION_MAIN_AUDIO_CONTENT_RECEIVER)
.apply { .apply {
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_PLAYING, Constants.EXTRA_AUDIO_CONTENT_PLAYING,
false false
) )
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_SHOWING, Constants.EXTRA_AUDIO_CONTENT_SHOWING,
true true
) )
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_TITLE, Constants.EXTRA_AUDIO_CONTENT_TITLE,
title title
) )
putExtra( putExtra(
Constants.EXTRA_NICKNAME, Constants.EXTRA_NICKNAME,
nickname nickname
) )
putExtra( putExtra(
Constants.EXTRA_AUDIO_CONTENT_COVER_IMAGE_URL, Constants.EXTRA_AUDIO_CONTENT_COVER_IMAGE_URL,
coverImageUrl coverImageUrl
) )
} }
) )
}
} }
private fun updateNotification() { private fun updateNotification() {