From 508955883066e8f2e330092341107887fe815794 Mon Sep 17 00:00:00 2001 From: Lucas Date: Wed, 15 Jan 2025 12:51:22 +0100 Subject: [PATCH 1/3] Fix playerId called without being initialized before --- .../reactnative/MediaSessionPlaybackManager.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt b/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt index 15de7745..89833dab 100644 --- a/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +++ b/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt @@ -12,7 +12,7 @@ import com.facebook.react.bridge.* class MediaSessionPlaybackManager(val context: ReactApplicationContext) { private var serviceBinder: MediaSessionPlaybackService.ServiceBinder? = null - private lateinit var playerId: NativeId + private var playerId: NativeId? = null val player: Player? get() = serviceBinder?.player @@ -24,7 +24,9 @@ class MediaSessionPlaybackManager(val context: ReactApplicationContext) { } override fun onServiceDisconnected(name: ComponentName) { - destroy(playerId) + playerId?.let { + destroy(it) + } } } @@ -38,13 +40,16 @@ class MediaSessionPlaybackManager(val context: ReactApplicationContext) { } fun destroy(nativeId: NativeId) { - if (nativeId != playerId) { return } + if (nativeId != playerId) { + return + } serviceBinder?.player = null serviceBinder = null } private fun getPlayer( - nativeId: NativeId = playerId, + nativeId: NativeId? = playerId, playerModule: PlayerModule? = context.playerModule, - ): Player = playerModule?.getPlayerOrNull(nativeId) ?: throw IllegalArgumentException("Invalid PlayerId $nativeId") + ): Player = nativeId?.let { playerModule?.getPlayerOrNull(nativeId) } + ?: throw IllegalArgumentException("Invalid PlayerId $nativeId") } From c8b06e590bcbba66484dbe4040be4fe4dce88cd6 Mon Sep 17 00:00:00 2001 From: Lucas Date: Wed, 15 Jan 2025 12:59:13 +0100 Subject: [PATCH 2/3] Remove unnecessary resolveOnUiThread call --- .../main/java/com/bitmovin/player/reactnative/PlayerModule.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt b/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt index b4a45185..3da1813e 100644 --- a/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +++ b/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt @@ -97,9 +97,7 @@ class PlayerModule(context: ReactApplicationContext) : BitmovinBaseModule(contex } if (enableMediaSession) { - promise.unit.resolveOnUiThread { - mediaSessionPlaybackManager.setupMediaSessionPlayback(nativeId) - } + mediaSessionPlaybackManager.setupMediaSessionPlayback(nativeId) } } From 6c7c2c7757051e0b3ccdaae94eaff1443291df79 Mon Sep 17 00:00:00 2001 From: Lucas Date: Wed, 15 Jan 2025 13:07:03 +0100 Subject: [PATCH 3/3] Add changelog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 177de6dd..bcfb61d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Android: App crashes when `mediaControlConfig.isEnabled` is set to `false` and the player gets destroyed + ## [0.36.0] - 2024-12-20 ### Changed