diff --git a/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt b/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt index dfdbbeb..15e421a 100644 --- a/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt +++ b/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt @@ -76,7 +76,7 @@ class FlutterRadioPlayerPlugin : FlutterPlugin, ActivityAware, MethodChannel.Met override fun onDetachedFromActivity() { if (isBound) { - frpRadioPlayerService.onDestroy() + frpRadioPlayerService.stop() } EventBus.getDefault().unregister(this) } diff --git a/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/services/FRPCoreService.kt b/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/services/FRPCoreService.kt index b85f523..6b59efa 100644 --- a/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/services/FRPCoreService.kt +++ b/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/services/FRPCoreService.kt @@ -108,6 +108,7 @@ class FRPCoreService : Service(), PlayerNotificationManager.NotificationListener if (exoPlayer != null) { exoPlayer?.release() + exoPlayer = null } mediaSessionConnector?.setPlayer(null) @@ -268,13 +269,20 @@ class FRPCoreService : Service(), PlayerNotificationManager.NotificationListener } } + private fun postCurrentPlayingEvent() { + exoPlayer?.currentMediaItemIndex?.let { + if (it < mediaSourceList.count()) { + eventBus.post(FRPPlayerEvent(currentSource = updateCurrentPlaying(mediaSourceList[it]))) + } + } + } + fun nextMediaItem() { Log.i(TAG, "Seeking to next media item...") exoPlayer?.seekToNext() exoPlayer?.prepare() exoPlayer?.play() - val currentMedia = mediaSourceList[exoPlayer?.currentMediaItemIndex!!] - eventBus.post(FRPPlayerEvent(currentSource = updateCurrentPlaying(currentMedia))) + postCurrentPlayingEvent() } fun prevMediaItem() { @@ -282,8 +290,7 @@ class FRPCoreService : Service(), PlayerNotificationManager.NotificationListener exoPlayer?.seekToPrevious() exoPlayer?.prepare() exoPlayer?.play() - val currentMedia = mediaSourceList[exoPlayer?.currentMediaItemIndex!!] - eventBus.post(FRPPlayerEvent(currentSource = updateCurrentPlaying(currentMedia))) + postCurrentPlayingEvent() } fun seekToMediaItem(index: Int, playIfReady: Boolean) { @@ -291,8 +298,7 @@ class FRPCoreService : Service(), PlayerNotificationManager.NotificationListener exoPlayer?.apply { playWhenReady = playIfReady } - val currentMedia = mediaSourceList[exoPlayer?.currentMediaItemIndex!!] - eventBus.post(FRPPlayerEvent(currentSource = updateCurrentPlaying(currentMedia))) + postCurrentPlayingEvent() } fun setVolume(volume: Float) { diff --git a/ios/flutter_radio_player.podspec b/ios/flutter_radio_player.podspec index 02bbdcb..a0ff5be 100644 --- a/ios/flutter_radio_player.podspec +++ b/ios/flutter_radio_player.podspec @@ -15,7 +15,7 @@ Online Radio Player for Flutter s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'SwiftAudioEx' + s.dependency 'SwiftAudioEx', '0.14.7' s.platform = :ios, '11.0' # Flutter.framework does not contain a i386 slice.